递归是什么意思?

递归是程序员经常选用的一种解决问题的方法,其中解决方案取决于对同一问题的较小输入的解决方案。

递归

也就是说,它思想是这样的:将问题分解成越来越小的子问题,直到达到可以解决问题的基本条件。

例如:n的阶乘问题(1一直乘到n),我们完全可以用递归的方法来解决。

JavaScript语言实现:

function factorial(n) {
  if(n === 1) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

console.log(factorial(5));  // 120

解决这个问题的思路是,将问题分解为更小的子问题。

如果n是1,那么这个问题很小,返回1。

如果n大于1,我们返回n乘以n-1的阶乘。

这个过程一直持续到我们到达基本情况(n=1),这个时候递归停止并返回最终结果。

写在最后:递归是一个很强大的解决问题的工具,但同时很多人也表示,递归难以理解和实现。

确保基本情况被正确定义并且递归最终终止是很重要的,否则这个递归函数将无限期地调用自身且永远不返回结果,因为它陷入了「无限循环条件」。