[课后作业]使用递归嵌套和循环两种方法求解斐波那契数列 [F。=0 F,=1 [F,=Fn_1+Fn-2使用C++语言
时间: 2024-10-06 21:02:03 浏览: 31
当然可以。斐波那契数列是一个经典的递归和迭代问题,可以用两种方法解决:
**1. 递归嵌套方法 (Recursion)**
```cpp
#include<iostream>
int fibonacci_recursive(int n) {
if(n <= 1)
return n;
else
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}
int main() {
int n;
std::cout << "Enter the number of terms: ";
std::cin >> n;
for(int i = 0; i < n; ++i) {
std::cout << fibonacci_recursive(i) << " ";
}
return 0;
}
```
在这个递归版本中,`fibonacci_recursive`函数会一直调用自身直到n小于或等于1。
**2. 循环迭代方法 (Iteration or Looping)**
```cpp
#include<iostream>
int fibonacci_iterative(int n) {
if(n <= 1)
return n;
int a = 0, b = 1, c;
for(int i = 0; i < n; ++i) {
c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int n;
std::cout << "Enter the number of terms: ";
std::cin >> n;
for(int i = 0; i < n; ++i) {
std::cout << fibonacci_iterative(i) << " ";
}
return 0;
}
```
在这个循环版本中,我们不再通过递归调用而是直接计算当前项,然后更新前两项。
**相关问题--:**
1. 这两种方法哪一种效率更高,为什么?
2. 当输入值非常大时,如何避免递归带来的栈溢出问题?
3. 斐波那契数列的应用有哪些?
阅读全文