我的代码返回0实际上它应该返回输入的反向

时间:2013-10-24 20:23:16

标签: c recursion reverse

我为学校编写了以下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;
}

2 个答案:

答案 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);
}