c++求斐波那契数列通项
时间: 2024-03-18 12:37:33 浏览: 225
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++求斐波那契数列第n项值算法
在 C++ 中计算斐波那契数列的第 n 项值,可以使用循环或者递归的方式。这里提供两种常见的实现:
**1. 使用循环(迭代法):**
```cpp
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1 || n == 2) return 1;
int fib = 1, prevFib = 1;
for (int i = 3; i <= n; ++i) {
int temp = fib;
fib += prevFib;
prevFib = temp;
}
return fib;
}
```
**2. 使用递归(虽然简洁但效率较低,因为有大量重复计算):**
```cpp
int fibonacci(int n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
```
**相关问题--:**
1. 为什么递归方法计算斐波那契数列效率不高?
2. 迭代法是如何避免递归的重复计算问题的?
3. 斐波那契数列在计算机科学中有哪些应用场景?
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;
}
```
阅读全文