cle*_*eek 14
递归函数会重复调用自身.无限循环将继续重复执行相同的代码.虽然这听起来非常相似,但实际效果却截然不同.每次调用方法时,变量都会被压入堆栈.当然,这意味着函数可以递归的次数存在固有的限制.因此,当你的无限循环将永远执行时,实际中的递归函数最终会耗尽堆栈空间,应用程序可能会停止运行.
递归函数调用自身,将参数压入堆栈.这可能会永远持续下去,最终导致堆栈溢出.一些编译器可以优化它,基本上将递归函数转换为while循环 - 这称为尾递归.
while循环将简单地返回到顶部并重新使用相同的空间,因此它可以永远运行(至少直到电源熄灭:-))