程序的输出结果

来源:百度知道 编辑:UC知道 时间:2024/06/28 02:56:35
给出以下程序的输出结果
#include <iostream.h>
int fib(int n)
{ int result;
cout << n << " ";
if (n < 2) result = 1; else result = fib(n - 1) + fib(n - 2);
return result;
}
int main()
{ cout << fib(3) << "\n";
}
请说一下原因,谢谢!

3 2 1 0 1 3
递归调用:
每次输出的都是参数最后一个是返回值;
fib函数 传入参数3,首次调用;*输出3;
执行到
fib(n - 1) 的时候,程序必须先得到fib(n - 1) 的值才能继续执行,所以执行fib(3-1)即fib(2) 再次调用此函数,*输出2;经过if判断,执行fib(n - 1) + fib(n - 2)即fib(2 - 1) + fib(2 - 2) *输出1和0;结果是1+1为2,2返回给fib(2);
此时在执行原fib(3)中的 fib(n - 2);*输出1的结果为1;将fib(3)中的fib(n - 1) + fib(n - 2)返回及2+1;主函数中*输出3;

以上 *输出 为输出标记