又是一个递归的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:03:24
int f(int n)
{
if(n==1)
return 0;
if(n==2)
return 1;
if(n>2)
return f(n-1)+f(n-2);
return -1;
}

这样我输入个"5",
程序它每一步都怎么走,请高手给我列一列,我就是不知道程序怎么走的?
麻烦说清楚点...谢谢!!

上面说的基本正确

不过程序执行起来还是比较繁琐的:
具体来说按如下步骤:->表示进入函数 <-表示return
f(4) {->f(3) [->f(2) <-1 ->f(1) <-0 <-1] ->f(2) <- 1<- 2} ->f(3) [->f(2) <-1 ->f(1) <-0]<-1 <- 3
函数结果为3

F(4)+F(3)
F(3)+F(2)+F(2)+F(1)
F(2)+F(1)+F(2)+F(2)+F(1)
=1+0+1+1+0=3
不知道啊是这么算的。