【发布时间】:2015-10-09 21:45:08
【问题描述】:
我试图理解以下程序,其中存在连续的递归函数调用,但在跟踪如何加载大头钉时感到困惑。
void func(char*); // function prototype
int main(){
func("123");
return 0;
}
void func(char a[]){
if(a[1]=='\0')
return;
func(a+1);
func(a+1);
printf("%c",a[1]);
}
这个的输出是 3 3 2
如果有人能就此提出建议,将不胜感激......
这种多重递归调用是否有任何好处或在特定问题领域找到应用......?
【问题讨论】:
-
这是最常用的递归示例(不是网站,而是斐波那契数计算):programmingsimplified.com/c-program-generate-fibonacci-series
-
确实,我用斐波那契计算作为面试题,要求候选人创建一个迭代和递归的解决方案。