我为学校编写了以下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;
}
答案 0 :(得分:1)
你几乎把它弄好了,唯一错误就是如何连接递归输出。
只是改变:
return nr + power(10,digits(x)-1)*(reverse(x/10)%10);
到:
return power(10,digits(x)-1)*(x%10) + (reverse(x/10));
答案 1 :(得分:0)
int reverse(int x)
{
if ( !(x/10) )
return x;
else
return (x % 10) * power(10,digits(x/10)) + reverse(x/10);
}