使用递归查找给定数字的反转的 Swift 程序
本教程将讨论如何编写 Swift 程序,使用递归查找给定数字的反转。
反转数字是一个过程,其中数字的数字位置互换以反转其顺序。为了找到数字的反转,我们使用递归方法。递归方法是一种方法,其中函数自身调用以完成指定的任务。
以下是相同内容的演示 -
输入
假设我们的给定输入是 -
MyVal = 278938
输出
所需的输出将是 -
Reverse number = 839872
方法 1
算法
以下是算法 -
步骤 1 - 创建一个递归函数。
步骤 2 - 设置基本条件以结束递归调用。
步骤 3 - 打印给定数字的个位数。
步骤 4 - 递归调用函数并找到剩余数字。
步骤 5 - 继续处理,直到数字减少到一位数。
示例
以下程序显示了如何使用递归查找给定数字的反转。
import Foundation import Glibc func reverseNum(N: Int){ if (N < 10){ print(N) } else{ print(N%10, terminator: "") reverseNum(N:N/10) } } var Num = 1234 print("Reverse of (Num) is ") reverseNum(N: Num)
输出
Reverse of (Num) is 4321
在上面的代码中,我们创建了一个名为 reverseNum() 的递归函数。此函数用于通过自身调用来反转给定数字 = 1234。因此,上面代码的工作原理如下 -
第一次调用 1234 -
reverseNum(N: 1234): Print(1234%10) = 4 reverseNum(N:1234/10) = 123
第二次调用 123 -
reverseNum(N: 123): Print(123%10) = 3 reverseNum(N:123/10) = 12
第三次调用 12 -
reverseNum(N: 12): Print(12%10) = 2 reverseNum(N:12/10) = 1
第四次调用 1 -
reverseNum(N: 1): Print(1%10) = 1 reverseNum(N:1/10) = 0 // Condition false loop end
因此,1234 的反转是 4321。
方法 2
算法
以下是算法 -
步骤 1 - 创建一个递归函数。
步骤 2 - 设置基本条件以结束递归调用。
步骤 3 - 声明一个名为 ext 的变量以从给定数字中提取个位数。
步骤 4 - 我们将 ext 添加到 res 变量。在这里,在将 ext 数字添加到反转数字之前,res 乘以 10。因为下一个数字总是添加到个位位置。
步骤 5 - 递归调用函数并反转剩余数字。
步骤 6 - 声明一个变量来存储我们要反转的数字。
步骤 7 - 调用函数并将数字作为参数传递给函数。
步骤 8 - 打印输出。
示例
以下程序显示了如何使用递归查找给定数字的反转。
import Swift import Foundation var res = 0 func reverseNUM(num: Int)->Int{ if (num == 0){ return res } if (num > 0){ let ext = num % 10 res = res * 10 + ext _ = reverseNUM(num: num/10) } return res } var val = 8655454 print("Original Number: ", val) print("Reverse number: ", reverseNUM(num:val))
输出
Original Number: 8655454 Reverse number: 4545568
在上面的代码中,我们创建了一个名为 reverseNUM() 的递归函数。此函数用于通过自身调用来反转给定数字 = 8655454。因此,上面代码的工作原理如下 -
第一次调用 8655454 -
reverseNUM(num: 8655454): if (8655454 > 0){ let ext = 8655454 % 10 = 4 res = res * 10 + ext = 0 * 10 + 4 = 4 reverseNUM(num: 8655454/10) = 865545 }
第二次调用 865545 -
reverseNUM(num: 865545): if (865545 > 0){ let ext = 865545 % 10 = 5 res = res * 10 + ext = 4 * 10 + 5 = 45 reverseNUM(num: 865545/10) = 86554 } Till if(num>0) condition is false.