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