我的问题陈述是:
编写一个递归函数,该函数将自然数作为参数,并返回向后读取的数字的值(以相反顺序的十进制数字):
例如:
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
数据类型的情况下解决此问题,并且仍然只在函数中保留一个参数。
答案 0 :(得分:2)
当然。只需从代码中删除单词static
,然后循环执行计算:
unsigned long f(unsigned long n){
long rev = 0;
while(n != 0) {
rev = rev*10 + n%10;
n /= 10;
}
return rev;
}
答案 1 :(得分:1)
您可以将当前结果作为函数的参数:
int f(int x, int r = 0)
{
if (x == 0) return r;
return f(x / 10, r * 10 + x % 10);
}