递归函数c++
时间: 2025-05-13 19:43:33 浏览: 18
### C++递归函数的实现与详解
#### 什么是递归函数?
递归函数是指在其定义中直接或间接调用自身的函数。这种技术允许将复杂问题分解为更简单的子问题来求解[^2]。
#### 基本结构
递归函数通常由两部分组成:
1. **基线条件(Base Case)**:停止递归的条件,防止无限循环。
2. **递归条件(Recursive Case)**:通过缩小问题规模逐步接近基线条件。
#### 阶乘计算示例
下面是一个经典的阶乘计算例子 `n!` 的实现:
```cpp
#include <iostream>
using namespace std;
int factorial(int n) {
if (n == 0) { // 基线条件
return 1;
} else { // 递归条件
return n * factorial(n - 1);
}
}
int main() {
int number = 5; // 输入值
cout << "Factorial of " << number << " is " << factorial(number) << endl;
return 0;
}
```
上述代码展示了如何利用递归来解决问题。当输入为 `5` 时,程序依次执行以下操作并最终返回结果 `120`。
#### Fibonacci 数列示例
另一个常见的递归应用是斐波那契数列的计算:
```cpp
#include <iostream>
using namespace std;
int fibonacci(int n) {
if (n <= 1) { // 基线条件
return n;
} else { // 递归条件
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
int term = 10; // 计算第10项
cout << "Fibonacci term at position " << term << " is " << fibonacci(term) << endl;
return 0;
}
```
此代码片段实现了斐波那契序列的递归版本。然而需要注意的是,该方法效率较低,因为它重复计算了许多相同的值。
#### 性能优化——记忆化存储
为了提升性能,可以通过引入缓存机制减少冗余运算。以下是改进后的斐波那契算法:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int fibonacciMemoized(int n, vector<int>& memo) {
if (memo[n] != -1) { // 如果已计算过,则直接返回
return memo[n];
}
if (n <= 1) { // 基线条件
memo[n] = n;
} else { // 递归条件
memo[n] = fibonacciMemoized(n - 1, memo) + fibonacciMemoized(n - 2, memo);
}
return memo[n];
}
int main() {
int term = 10;
vector<int> memo(term + 1, -1); // 初始化备忘录数组
cout << "Fibonacci term at position " << term << " is " << fibonacciMemoized(term, memo) << endl;
return 0;
}
```
这种方法显著提高了运行速度,尤其对于较大的输入值。
---
####
阅读全文
相关推荐


















