c++求斐波那契数列通项
时间: 2024-03-18 07:37:33 浏览: 140
C++中求解斐波那契数列通项可以使用递或者循环的方式来实现。下面是两种常见的方法:
1. 递归方法:
```cpp
int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
```
这种方法简洁明了,但是效率较低,因为会存在大量的重复计算。
2. 循环方法:
```cpp
int fibonacci(int n) {
if (n <= 1) {
return n;
}
int prev = 0;
int curr = 1;
for (int i = 2; i <= n; i++) {
int temp = curr;
curr = prev + curr;
prev = temp;
}
return curr;
}
```
这种方法通过循环来逐步计算斐波那契数列的每一项,避免了重复计算,效率较高。
相关问题
斐波那契数列通项c++
斐波那契数列通项公式为:$f_n=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]$。但是在实际编程中,使用递推公式$f[n] = f[n-1] + f[n-2]$更为方便和高效。可以使用循环或递归的方式实现斐波那契数列的求解。另外,引用中提供了一种利用数组实现斐波那契数列的方法,可以通过预处理数组来快速求解任意位置的斐波那契数列值。
c++求斐波那契数列
以下是三种C++实现斐波那契数列的方法:
1.数组实现
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int a[10000] = {1, 1};
for (int i = 2; i < n; i++) {
a[i] = a[i - 1] + a[i - 2];
}
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}
```
2.递归实现
```c++
#include <iostream>
using namespace std;
int fib(int n) {
if (n == 0 || n == 1) {
return 1;
}
return fib(n - 1) + fib(n - 2);
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cout << fib(i) << " ";
}
return 0;
}
```
3.动态规划实现
```c++
#include <iostream>
using namespace std;
int fib(int n) {
int a = 1, b = 1;
for (int i = 2; i < n; i++) {
int c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cout << fib(i) << " ";
}
return 0;
}
```