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