diff --git a/eBook/06.6.md b/eBook/06.6.md index db62434..7532c30 100644 --- a/eBook/06.6.md +++ b/eBook/06.6.md @@ -49,7 +49,7 @@ fibonacci(10) is: 89 许多问题都可以使用优雅的递归来解决,比如说著名的快速排序算法。 -在使用递归函数时经常会遇到的一个重要问题就是栈溢出:一般出现在大量的递归调用导致的程序栈内存分配耗尽。这个问题可以通过一个名为懒惰评估的技术解决,在 Go 语言中,我们可以使用管道(channel)和 goroutine(详见第 14.8 节)来实现。练习 14.12 也会通过这个方案来优化斐波那契数列的生成问题。 +在使用递归函数时经常会遇到的一个重要问题就是栈溢出:一般出现在大量的递归调用导致的程序栈内存分配耗尽。这个问题可以通过一个名为[懒惰求值](https://zh.wikipedia.org/wiki/惰性求值)的技术解决,在 Go 语言中,我们可以使用管道(channel)和 goroutine(详见第 14.8 节)来实现。练习 14.12 也会通过这个方案来优化斐波那契数列的生成问题。 Go 语言中也可以使用相互调用的递归函数:多个函数之间相互调用形成闭环。因为 Go 语言编译器的特殊性,这些函数的声明顺序可以是任意的。下面这个简单的例子展示了函数 odd 和 even 之间的相互调用(示例 6.14 [mut_recurs.go](examples/chapter_6/mut_recurs.go)): @@ -116,4 +116,4 @@ n! 的阶乘定义为:`n! = n * (n-1)!, 0! = 1`,因此它非常适合使用 - [目录](directory.md) - 上一节:[内置函数](06.5.md) -- 下一节:[将函数作为参数](06.7.md) \ No newline at end of file +- 下一节:[将函数作为参数](06.7.md)