递归函数怎么用,什么时候用

141 阅读1分钟

递归函数(Recursive Function)是指在解决问题时调用自身的函数。它类似于循环,但不是重复执行一段代码,而是通过调用自身来处理问题的较小部分。

https___dev-to-uploads.s3.amazonaws.com_uploads_articles_3m8qifri0zfhaz3si8aj.avif

为什么使用递归函数?

  1. 问题分解

    • 当问题可以被分解成更小、类似的子问题时,递归函数非常有用。
  2. 代码简洁性

    • 对于某些问题,使用递归比使用循环可以使代码更简洁、易于理解。

关键组成部分:

  1. 基本情况(Base Case)

    • 这是停止递归的条件。如果没有基本情况,函数将会无限调用自身。
  2. 递归情况(Recursive Case)

    • 在递归情况中,函数调用自身并处理问题的较小部分,直到达到基本情况为止。

    demo:

    if (countDown <= 0) {
        console.log('Goo...!!!');
        return;
    }
    console.log(countDown);
    runOrder(countDown - 1);
}
runOrder(4);
// 输出:
// 4
// 3
// 2
// 1
// Goo...!!!

在这个例子中,runOrder 函数通过递减的方式从 countDown 开始倒数,直到倒数到0时输出 'Goo...!!!' 并停止递归。

demo1:

    if (times <= 0) {
        console.log(`Who's there?`);
        return;
    }
    console.log(times);
    knockKnock(times - 1);
}
knockKnock(3);
// 输出:
// 3
// 2
// 1
// Who's there?

在这个例子中,knockKnock 函数从 times 开始倒数,每次递减并输出倒数的数字,直到倒数到0时输出 'Who's there?' 并停止递归。

总结

递归函数通过反复调用自身来解决问题,适合于可以分解成较小、相似问题的场景。它们的基本情况定义了递归何时停止,而递归情况则负责将问题分解为更小的部分,直到达到基本情况为止。递归虽然强大,但需要谨慎使用,确保不会导致无限递归或性能问题。