我目前正在解决一个关于俄罗斯农民算法的程序,并且我正在使用递归代码:
我的代码:
int russian_peasant(int a,int b)
{
static int sum =0;
if(a>=1)
{
if(a%2!=0)
{
sum += (b);
russian_peasant(a/2,b*2);
}
else
{
russian_peasant(a/2,b*2);
}
}
printf("%d\n",sum);
return sum;
}
即使我已经将 sum 声明为静态而不是打印 printf("%d\n",sum); 对于每次调用,都会打印最后修改的值!..
我应该如何打印每次通话的价值?为什么我的方法不起作用?