📜  C++ 递归(1)

📅  最后修改于: 2023-12-03 15:14:01.743000             🧑  作者: Mango

C++递归

在C++中,递归是一种函数自己调用自己的方式。它通常用于解决可以被细分为更小的、同一类型的子问题的问题。递归函数包括两个部分:基本情况和递归情况。

基本情况

基本情况是递归函数终止的条件。在递归函数中,通常需要设置一个或多个基本情况来确保函数在某些条件下立即退出,以避免无限循环。

以下是一个计算阶乘的递归函数,其中基本情况为n=0:

int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n-1);
    }
}
递归情况

递归情况是递归函数解决问题的步骤。在递归函数中,通常需要将问题分为更小的同一类型的子问题并将其解决。解决完子问题后,递归函数再将结果合并为最终答案。

以下是一个计算斐波那契数列的递归函数,其中递归情况为f(n) = f(n-1) + f(n-2):

int fibonacci(int n) {
    if (n == 0 || n == 1) {
        return n;
    } else {
        return fibonacci(n-1) + fibonacci(n-2);
    }
}
递归的优点和缺点

递归具有以下优点:

  • 递归代码通常更简洁易懂,容易理解和维护
  • 递归可以解决一些复杂的问题,尤其是涉及到树和图的问题

但递归也有缺点:

  • 递归通常比迭代慢,因为它需要多次调用自身,并使用更多的栈空间
  • 递归可能导致无限循环或栈溢出,如果不小心编写递归函数,这些问题可能会出现
总结

递归是一种强大的编程技巧,它可以解决一些复杂的问题。在使用递归时,需要注意其基本情况和递归情况,以避免无限循环或栈溢出的问题。