使用递归方法求给定数的逆序的 Swift 程序
本教程将讨论如何编写 Swift 程序,使用递归方法求给定数的逆序。
逆序是指将数字的各位数字位置互换,从而反转其顺序。为了求逆序,我们使用递归方法。递归方法是一种函数调用自身来完成指定任务的方法。
以下是相同的演示 -
输入
假设给定的输入是 -
MyVal = 278938
输出
所需的输出将是 -
反向数字 = 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("(Num) 的逆操作为 ")
reverseNum(N: Num)
输出
(Num) 的逆操作为 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 // 条件为 false,循环结束
因此,1234 的逆运算结果为 4321。
方法 2
算法
算法如下 -
步骤 1 - 创建一个递归函数。
步骤 2 - 设置基本条件以结束递归调用。
步骤 3 - 声明一个名为 ext 的变量,用于从给定数字中提取个位数。
步骤 4 -我们将扩展数添加到 res 变量中。这里,在将扩展数添加到反转数之前,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("原始数字: ", val)
print("反转数字: ", reverseNUM(num:val))
输出
原始数字:8655454 反转数字: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.