算法图解第3章——递归

从一堆盒子中找到一把钥匙,有两种方法:

第一种:while循环,只要盒子堆不空,就从中拿出一个,在其中仔细查找;没有就再拿出一个;直到找到钥匙。

第二种:递归,没有盒子堆,有一个大盒子,在盒子中查找,没有钥匙就继续查找里面的小盒子,直到找到钥匙。

递归:函数调用自己。

编写递归函数,需要有基线条件和递归条件。基线条件,告诉它何时停止;递归条件,告诉它继续调用自己。

递归会用到调用栈,栈中存储多个函数的变量。如果栈很高,会占用大量的内存。

while循环性能刚高,递归让解决方案更清晰,性能要付出代价。

可参照二分查找中的示例:递归和循环示例代码