我正在努力理解用于斐波那契数列的递归机制。
#include<stdio.h>
int fib(int n);
int main()
{
int x, n;
scanf("%d", &n);
x = fib(n);
printf("fibonacci number %d = %d\n", n, x);
return 0;
}
int fib(int n)
{
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else
{
return (fib(n -1) + fib(n - 2));
}
}
以下是该系列的代码。我可以追踪程序(n = 6)直到返回调用fib(1)并返回1的第一个术语为止。在那之后,我有点迷失了追踪执行。我尝试通过堆栈图来理解它,但我仍然感到困惑。有人能帮助我吗?还有,我如何使用gdb跟踪堆栈框架并查看堆栈框架上的变量值?
谢谢