我的问题是:
编写一个递归函数,该函数以自然数作为参数,并返回向后读取的数字值(十进制数字的顺序相反):
例如:f(3120) = 213
我已经解决了这个问题,但是我使用static来存储我的反向号码,如下所示:

unsigned long f(unsigned long n){
    static long rev;
    if(n==0)
        return 0;
    else
        {
            rev=rev*10+n%10;
            f(n/10);
        }
    return rev;
}

但我想知道是否有一种方法可以解决这个问题,而不使用static数据类型,并且在函数中只保留一个参数。

最佳答案

当然。只需从代码中删除单词static并循环计算即可:

unsigned long f(unsigned long n){
    long rev = 0;
    while(n != 0) {
        rev = rev*10 + n%10;
        n /= 10;
    }
    return rev;
}

关于c - 递归功能,用于逆转数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32943131/

10-11 22:50
查看更多