我为学校编写了以下 C 代码,我似乎无法找出为什么它返回 0。我必须使用递归位数和幂函数来递归反转输入数字(反转函数必须是 1 参数函数):
#include<stdio.h>
int digits(int x)
{
if(x!=0)
return 1 + digits(x/10);
else
return 0;
}
int power(int x,int y)
{
if(y!=1)
return x*power(x,y-1);
else
return x;
}
int reverse(int x)
{
static int nr=0;
if(digits(x)!=1)
return nr + power(10,digits(x)-1)*(reverse(x/10)%10);
else
return x;
}
int main()
{
int x;
scanf("%d",&x);
printf("%d\n",reverse(x));
return 0;
}