在学习js时,递归这块内容是挺杂乱的,所以据此我给大家整理了关于递归的相关内容,文章通过案例代码介绍的较为详细,会对大家的学习有一定的帮助,在文章开始我先介绍了递归的基础内容,让大家有个知识概念,这样后面的学习不会一头雾水,后面列举了使用递归的例子。apache php mysql
前言
递归性能差是没争议的事实,如果你觉得 for 循环更好,没必要学递归,那看到这里你可以不用看了。这篇文章要展示的大部分代码,仅仅是学习目的,我不推荐在生产环境中用。但是如果你对函数式编程感兴趣,想深入理解一些核心概念,你应该读下去。
今年年初我开始学 Haskell 的时候,我被函数式代码的优雅和简洁俘获了。代码居然还能这样写!用指令式代码要写一堆的程序,用递归几行就解决了。这篇文章里,我会把我在 Haskell 里面看到的递归函数翻译成 JS 和 Python,并尽量每一步解释。最后我会尝试解决递归爆栈(Stack Overflow)的问题。
递归基础
我从 Python 代码开始,然后展示 JS 实现。
很多解释递归的教程是从解释斐波那契数列开始的,我觉得这样做是在用一个已经复杂的概念去解释另一个复杂的概念,没有必要。我们还是从简单的代码开始吧。
运行这段 Python 代码:
def foo(): foo() foo()
当然会报错。
Atas ialah kandungan terperinci 系统整理js递归函数的应用及对递归爆栈问题的解决. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!