编写递归函数int fib(int n),在主函数输入n的值,调用fib函数计算Fibonacci级数
时间: 2024-09-26 20:13:46 浏览: 64
递归函数是一种解决问题的方法,它将复杂的问题分解成规模更小、相似的子问题,直到遇到基本情况为止。对于计算斐波那契数列(Fibonacci sequence),这是一个经典的递归例子。斐波那契数列定义如下:第0项(F(0))和第1项(F(1))都等于1,从第2项开始,每一项都是前两项之和。
下面是一个简单的C++实现`int fib(int n)`的递归函数:
```cpp
#include <iostream>
// 递归函数计算斐波那契数
int fib(int n) {
// 基本情况:如果n小于等于1,返回n
if (n <= 1) {
return n;
}
// 递归情况:返回当前项等于前两项相加
else {
return fib(n - 1) + fib(n - 2);
}
}
int main() {
int n; // 用户输入的值
std::cout << "请输入一个正整数n: ";
std::cin >> n;
// 调用递归函数并打印结果
std::cout << "斐波那契数列的第" << n << "项是: " << fib(n) << std::endl;
return 0;
}
```
当你运行这个程序时,用户需要输入一个正整数n,然后会输出对应的斐波那契数。注意,递归实现虽然直观,但对于大数值可能会非常慢,因为会有很多重复计算。实际应用中,可以考虑使用动态规划来优化。
相关问题
编写递归函数int fib (int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。 扩展练习:使用内联函数编程求出自然数1~10中各个数的立方值。
编写递归函数`int fib(int n)`,用于计算斐波那契数列。该数列的定义是:第0项为0,第1项为1,从第2项开始,每一项都等于前两项之和。递归函数的实现如下:
```c++
int fib(int n) {
if (n <= 1) { // 基本情况
return n;
} else {
return fib(n - 1) + fib(n - 2); // 递归调用
}
}
```
在主程序中,你可以让用户输入一个整数n,并调用这个函数:
```c++
#include <iostream>
int main() {
int n;
std::cout << "请输入一个正整数n: ";
std::cin >> n;
std::cout << "斐波那契数列的第" << n << "项是: " << fib(n) << std::endl;
return 0;
}
```
对于扩展练习,可以使用内联函数(inline function)来提高立方值计算的效率。内联函数是一种要求编译器将函数体直接替换到调用位置的技术。下面是计算1到10之间每个数字立方的内联函数示例:
```c++
// 内联函数声明
inline int cube(int num) {
return num * num * num;
}
int main() {
for (int i = 1; i <= 10; ++i) {
std::cout << "1到10中," << i << "的立方是: " << cube(i) << std::endl;
}
return 0;
}
```
编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数 公式为:fib(n)=fib(n-1)+fib(n-2),n>2 fib (1)=fib(n-2)=1
递归函数是一种在函数定义中调用自己的方法。对于计算Fibonacci数列,我们可以创建一个名为`fib`的函数,它接受一个整数`n`作为参数,并返回第`n`项的Fibonacci数值。当`n`小于等于2时,直接返回相应的基础值,即1;否则,就通过调用自身来计算前两项的和。
下面是一个简单的C++实现:
```cpp
#include <iostream>
// 定义递归函数计算Fibonacci数列
int fib(int n) {
// 基础情况:当n为0或1时,返回1
if (n == 0 || n == 1)
return 1;
else
// 递归调用:返回当前项等于前两项之和
return fib(n - 1) + fib(n - 2);
}
int main() {
int n; // 输入项数
std::cout << "请输入一个正整数n: ";
std::cin >> n;
// 调用函数并打印结果
std::cout << "Fibonacci(" << n << ") = " << fib(n) << std::endl;
return 0;
}
```
阅读全文