递归是程序员经常选用的一种解决问题的方法,其中解决方案取决于对同一问题的较小输入的解决方案。
也就是说,它思想是这样的:将问题分解成越来越小的子问题,直到达到可以解决问题的基本条件。
例如: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),这个时候递归停止并返回最终结果。
写在最后:递归是一个很强大的解决问题的工具,但同时很多人也表示,递归难以理解和实现。
确保基本情况被正确定义并且递归最终终止是很重要的,否则这个递归函数将无限期地调用自身且永远不返回结果,因为它陷入了「无限循环条件」。