How to recursively check if a number is palindrome in Swift

2 Answers

0 votes
import Foundation

func isPalindrome(_ num: Int, reversed: Int = 0, original: Int? = nil) -> Bool {
    // Initialize the original on the first call
    let originalNum = original ?? num

    // Base case: If the number is reduced to 0, check if the reversed matches the original
    if num == 0 {
        return reversed == originalNum
    }

    // Recursive case: Extract the last digit, update reversed, and call recursively
    let remainder = num % 10
    return isPalindrome(num / 10, reversed: reversed * 10 + remainder, original: originalNum)
}

let number = 12321
if isPalindrome(number) {
    print("\(number) is a palindrome.")
} else {
    print("\(number) is not a palindrome.")
}



/*
run:

12321 is a palindrome.

*/

 



answered Apr 8, 2025 by avibootz
0 votes
import Foundation

func recursiveCheckPalindrome(_ n: Int, inverseNumber: inout Int) -> Bool {
    // Base case: If the number is 0, stop recursion and return false (initialization).
    if n == 0 {
        return false
    }
    
    // Update the inverseNumber by adding the last digit
    inverseNumber = (inverseNumber * 10) + (n % 10)
    
    // Recursive call with the remaining digits
    _ = recursiveCheckPalindrome(n / 10, inverseNumber: &inverseNumber)
    
    // Check if the original number matches the reversed number
    return n == inverseNumber
}

var number = 12321
var inverseNumber = 0

if recursiveCheckPalindrome(number, inverseNumber: &inverseNumber) {
    print("\(number) is a palindrome.")
} else {
    print("\(number) is NOT a palindrome.")
}



/*
run:

12321 is a palindrome.

*/

 



answered Apr 9, 2025 by avibootz
...