在c++中用递归的方法编写函数求Fibonacci 级数,观察递归调用的过程
时间: 2024-01-22 11:18:49 浏览: 98
用C++求Fibonacci级数
好的,以下是用递归的方法编写求Fibonacci 级数的函数:
```c++
#include <iostream>
using namespace std;
int fibonacci(int n) {
if (n == 0) { // 基本情况1
return 0;
}
else if (n == 1) { // 基本情况2
return 1;
}
else { // 递归情况
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n = 10;
cout << "Fibonacci series of " << n << " numbers: ";
for (int i = 0; i < n; i++) {
cout << fibonacci(i) << " ";
}
cout << endl;
return 0;
}
```
在这个函数中,当n为0或1时,为基本情况,直接返回结果;否则,为递归情况,调用函数本身来计算结果。
接下来,我们来观察一下递归调用的过程:当n=4时,函数调用如下:
```
fibonacci(4)
= fibonacci(3) + fibonacci(2)
= (fibonacci(2) + fibonacci(1)) + (fibonacci(1) + fibonacci(0))
= ((fibonacci(1) + fibonacci(0)) + 1) + 1 + 0
= 3
```
可以看到,在计算fibonacci(4)时,函数被递归调用了5次,分别是:fibonacci(4),fibonacci(3),fibonacci(2),fibonacci(1)和fibonacci(0)。每次调用时,都会将问题规模缩小,直到问题规模达到基本情况,从而得到最终的结果。这就是递归的调用过程。
阅读全文