C++——递归调用

88 阅读1分钟

递归调用

概念: 一个函数在执行的过程中,直接或间接地调用了自身。为了避免无限循环,递归必须有一个明确的结束条件。

关键:

  • 递归的终止条件 (Base Case): 这是递归函数不再调用自身的条件,是递归能够结束的根本保证。

  • 递归的递推关系 (Recursive Step): 定义了如何将问题分解为更小的、与原问题结构相同的子问题。

示例代码:

#include <iostream>

// 计算阶乘
int factorial(int n) {
  std::cout << "计算 " << n << " 的阶乘" << std::endl;
  // 递归终止条件
  if (n == 0) {
    std::cout << "到达终止条件,返回 1" << std::endl;
    return 1;
  }
  // 递归调用
  int result = n * factorial(n - 1);
  std::cout << n << " 的阶乘计算完成,结果为 " << result << std::endl;
  return result;
}

// 使用递归计算斐波那契数列
int fibonacci(int n) {
  if (n <= 1) {
    return n;
  }
  return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
  int num = 5;
  std::cout << num << " 的阶乘是: " << factorial(num) << std::endl;
  std::cout << std::endl;

  std::cout << "斐波那契数列第 10 项是: " << fibonacci(10) << std::endl;

  return 0;
}