【发布时间】:2013-06-07 10:11:33
【问题描述】:
我目前正在解决Russian Peasant algorithm 上的一个程序,并且我正在使用递归代码:
我的代码:
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);每次调用都会打印最后修改的值!..
我应该如何打印每次调用的值?为什么我的方法不起作用?
【问题讨论】:
-
这就是
static的特点,没有错。 -
这正是
static关键字的行为方式:变量的值在调用之间保持不变。你想达到什么目的? -
只要去掉
static关键字,每次都会得到sum的新值。
标签: c