Rumah  >  Artikel  >  hujung hadapan web  >  系统整理js递归函数的应用及对递归爆栈问题的解决

系统整理js递归函数的应用及对递归爆栈问题的解决

php是最好的语言
php是最好的语言asal
2018-08-02 16:53:072360semak imbas

在学习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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn