1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(function): fix 斐波那契数列的尾递归 #835

This commit is contained in:
ruanyf 2019-03-30 20:56:29 +08:00
parent 3f080e92bd
commit 3c45b041d5

View File

@ -1131,8 +1131,8 @@ function Fibonacci (n) {
} }
Fibonacci(10) // 89 Fibonacci(10) // 89
Fibonacci(100) // 堆栈溢出 Fibonacci(100) // 超时
Fibonacci(500) // 堆栈溢出 Fibonacci(500) // 超时
``` ```
尾递归优化过的 Fibonacci 数列实现如下。 尾递归优化过的 Fibonacci 数列实现如下。
@ -1149,7 +1149,7 @@ Fibonacci2(1000) // 7.0330367711422765e+208
Fibonacci2(10000) // Infinity Fibonacci2(10000) // Infinity
``` ```
由此可见“尾调用优化”对递归操作意义重大所以一些函数式编程语言将其写入了语言规格。ES6 亦是如此,第一次明确规定,所有 ECMAScript 的实现都必须部署“尾调用优化”。这就是说ES6 中只要使用尾递归,就不会发生栈溢出,相对节省内存。 由此可见“尾调用优化”对递归操作意义重大所以一些函数式编程语言将其写入了语言规格。ES6 亦是如此,第一次明确规定,所有 ECMAScript 的实现都必须部署“尾调用优化”。这就是说ES6 中只要使用尾递归,就不会发生栈溢出(或者层层递归造成的超时),相对节省内存。
### 递归函数的改写 ### 递归函数的改写