c++用函数递归调用求Fibonacci数列第20项的值
时间: 2024-05-10 07:14:19 浏览: 114
可以使用递归函数来求解Fibonacci数列的第20项,如下所示:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int result = fibonacci(20);
printf("Fibonacci(20) = %d\n", result);
return 0;
}
```
在上面的代码中,`fibonacci` 函数使用了递归来计算Fibonacci数列的第n项,如果n为0或1,则直接返回n,否则递归调用 `fibonacci(n-1)` 和 `fibonacci(n-2)` 来计算第n项的值。在 `main` 函数中,我们调用 `fibonacci(20)` 来计算Fibonacci数列的第20项,并将计算结果打印出来。
相关问题
在C++中用非递归的函数调用形式求斐波那契数列的第n项
在C++中,非递归地计算斐波那契数列的第n项可以使用循环结构和动态规划的思想。你可以创建一个数组来存储已经计算过的斐波那契数值,避免了反复计算已知项。以下是一个简单的示例:
```cpp
#include <iostream>
int fibonacci(int n) {
if (n <= 0) {
std::cout << "错误:n必须大于0" << std::endl;
return -1; // 或者抛出异常
}
// 创建一个大小为n+1的数组,用于存储斐波那契序列值
int fib[1 + n];
fib[0] = 0;
fib[1] = 1;
// 使用循环计算并填充数组
for (int i = 2; i <= n; ++i) {
fib[i] = fib[i - 1] + fib[i - 2];
}
// 返回第n项
return fib[n];
}
int main() {
int n;
std::cout << "请输入斐波那契数列的项数(n): ";
std::cin >> n;
int result = fibonacci(n);
if (result != -1) {
std::cout << "斐波那契数列的第" << n << "项是: " << result << std::endl;
}
return 0;
}
```
C++定义一个递归函数,求Fibonacci数列的第n项。在主函数中调用此函数,求出Fibonacci数列的前30项,每行5个输出在屏幕上。
在C++中,我们可以定义一个递归函数来计算Fibonacci数列的第n项。Fibonacci数列是一个经典的递归序列,它的定义是:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2),对于n > 1。
以下是使用递归方式实现的代码:
```cpp
#include <iostream>
// 递归函数计算Fibonacci数列的第n项
unsigned long long fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
const int n_terms = 30; // 要计算的项数
unsigned long long fib_sequence[n_terms]; // 存储结果
// 计算Fibonacci数列的前30项
for (int i = 0; i < n_terms; ++i) {
fib_sequence[i] = fibonacci(i);
}
// 输出结果,每行显示5个数
for (int i = 0; i < n_terms; i += 5) {
std::cout << "Fibonacci(" << i << ") to Fibonacci(" << i+4 << "): ";
for (int j = i; j < i+5 && j < n_terms; ++j) {
std::cout << fib_sequence[j] << " ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码首先初始化一个数组来存储Fibonacci数列的结果,然后通过循环计算每一项。接着,它按每五行打印的方式展示结果。
请注意,递归计算Fibonacci数列在n较大的时候效率较低,因为它会有大量的重复计算。为了更高效地实现,可以考虑使用动态规划或迭代方法。
阅读全文