根据我的说法,该函数应该返回 2 作为答案,因为每次递归调用该函数时,静态变量“r”都会再次重新分配为零。 注意:函数中传递的参数是5。
int fun(int n){
static int r=0;
if(n<=0)return 0;
else if(n>3){
r=n;
return fun(n-2)+2;
}
else return fun(n-1)+r;
}
当向函数传递 5 时,该函数实际上返回 17。
最佳答案
替换
static int r=0;
与
static int r;
r = 0;
静态变量仅在 main 之前初始化一次。每次需要执行此操作时,您都必须显式地将其重新初始化为 0。
关于c - 为什么这个函数在完成递归运行后返回整数 17?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103013/