0
我爲學校寫了下面的C代碼,我似乎無法找出爲什麼它返回0.我必須使用遞歸數字和功率函數來遞歸地反向輸入數字(反向函數必須是1參數函數):我的代碼返回0實際上它應該返回輸入的反向
#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;
}
'nr'始終爲0 – SLaks
你可以通過把一些printf語句到每個函數的詳細參數調用啓動然後返回值 – KeepCalmAndCarryOn
就像一個想法:使用一個單一循環和完全可重入的'reverse'的迭代實現只有少數幾行,並且可能更容易o比你的遞歸方法更合理。 –