【发布时间】:2019-10-15 13:25:17
【问题描述】:
我不明白为什么 effe(10) 过程的结果是 110。(这是从练习中提取的代码)
我试图写下代码中发生的事情,但是递归太多,我无法理解发生了什么。
int effe(int);
int gi(int);
int main(){
int test = effe(10);
printf("%d\n", test); //this prints 110
system("pause");
return 0;
}
int effe(int a){
if(a < 2)
return a * 2;
else
return (gi(a - 1) + gi(a - 2));
}
int gi(int a){
if (a < 2)
return effe(a);
else
return (effe(a - 1) + effe(a - 2));
}
【问题讨论】:
-
effe的调用总数为 133 个,gi的调用总数为 88 个。如果没有任何 cmets(或好的变量/函数名称),很难说这个程序应该计算什么。 -
我会在里面扔几个
printfs。printf("In gi, a = %d", a); -
我知道,但这不是一个“真正的程序”,它是我学校组织的一种计算机技术竞赛的练习。该练习要求您找到调用 effe(10) 函数后返回的数字。我认为也许有一种简短的方法可以理解它....我不知道....
-
@SteveSummit 很高兴听到这个消息。我也很不擅长这些谜题:当我看到这些东西时,我的大脑就崩溃了