long fib(int g)
{
switch (g) {
case 1:
case 2:return 1;
}
return (fib(g - 1) + fib(g - 2));
}
int main()
{
long k;
k = fib(5);
printf("k=%d\n", k);
}
递归,一层层的入栈,最后g为 1 或者 2 返回 1,然后再一层层出栈返回
fib(5)=fib(4) + fib(3)
=fib(3) +fib(2) + fib(2) + fib(1)
=fib(2) + fib(1) + 1 + 1 + 1
=1+1+1+1+1
=5
递归,供参考:
fib(5)
fib(4) fib(3)
fib(3) fib(2) fib(2) fib(1)
fib(2) fib(1) +1 + 1 + 1
1 + 1