#include <iostream>
#include <iomanip>
int fib(int n) {
std::cout << std::setw((4-n)*4)<< " " << "开始计算fib(" << n <<")\n" << std::endl;
if (n == 0) {
std::cout<< std::setw((4-n)*4) << " " << "n == 0,返回0\n" << std::endl;
return 0;
}
if (n == 1) {
std::cout<< std::setw((4-n)*4) << " " << "n == 1,返回1\n" << std::endl;
return 1;
}
int res = fib(n - 1) + fib(n - 2);
std::cout << std::setw((4-n)*4)<< " " << "计算fib(" << n <<")结束\n" << std::endl;
return res;
}
int main()
{
int n = 4;
int res = fib(n);
std::cout << " f(" << n << ") = " << res << "\n" << std::endl;
return 0;
}
开始计算fib(4)
开始计算fib(3)
开始计算fib(2)
开始计算fib(1)
n == 1,返回1
开始计算fib(0)
n == 0,返回0
计算fib(2)结束
开始计算fib(1)
n == 1,返回1
计算fib(3)结束
开始计算fib(2)
开始计算fib(1)
n == 1,返回1
开始计算fib(0)
n == 0,返回0
计算fib(2)结束
计算fib(4)结束
f(4) = 3
(gdb) bt
#0 fib (n=1) at test.cpp:12
#1 0x0000000000400a2b in fib (n=2) at test.cpp:16
#2 0x0000000000400a2b in fib (n=3) at test.cpp:16
#3 0x0000000000400a2b in fib (n=4) at test.cpp:16
#4 0x0000000000400ac4 in main () at test.cpp:24