0

学校向けに次の 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;
}
4

2 に答える 2

1

ほぼ正しかったのですが、唯一間違っていたのは、再帰的な出力の接続方法でした。

変更するだけです:

return nr + power(10,digits(x)-1)*(reverse(x/10)%10);

に :

return power(10,digits(x)-1)*(x%10) + (reverse(x/10));
于 2013-10-24T20:42:02.133 に答える