3.2.9 递归

递归是十分有趣的,有时也是非常有用的编程技巧,凭借递归我们可以在一个函数内部调用该函数。当然,如果这是所做的全部,那么会一直调用下去,直到内存用完,所以一定要有一种确定“达到底点”递归调用的方法。在下面的例子中,只要递归到cat的值超过‘Z’,递归就“达到底点”:[1]

3.2.9 递归 - 图1

在removeHat()中,只要cat的值小于‘Z’,就会在removeHat()中调用removeHat(),从而实现递归。每次调用removeHat(),它的参数比当前的cat值增加1,所以参数不断增加。

求解某些具有随意性的复杂问题经常使用递归,因为这时解的具体“大小”不受限制,函数可以一直递归调用,直到问题解决。

[1]感谢Kris C.Matson建议这个练习题。