c - 我试图通过在 c 语言中使用递归来反转一个数字,但输出没有改变
问题描述
#include <stdio.h>
int rev(int num);
int main()
{
int num=123;
printf("\n%d",rev(num)/10);
return 0;
}
int rev(int num)
{
if(num==0)
{
return 0;
}
else
{
return ((num%10)+rev(num/10))*10;
}
}
解决方案
long reverse(int n) {
static int r = 0;
if (n == 0)
return 0;
r = r * 10;
r = r + n % 10;
reverse(n/10);
return r;
}
在每次迭代中,您将一次数字添加到静态 r 并将结果乘以 10,然后使用没有该数字的数字调用递归函数n/10