为什么永远的循环不会崩溃?为什么无限递归会崩溃?
Why doesn't a forever loop crash? Why does an infinite recursion crash?
我的问题是:为什么无限递归崩溃,而不是无限循环?它们都感觉像是普通的永久迭代器,但一个崩溃而另一个没有。我正在寻找 hardware/low-level 响应。在使用 Python 在 Jupyter 上进行实验时,我通常会遇到 Whosebug 错误。另外,当我指的是低级响应时,我指的是计算机硬件(RAM,CPU)中发生的导致无限递归崩溃的事情,而不是无限迭代。
因为无限递归不断将递归调用存储在堆栈中(这是您的应用程序持有的内存之一),所以它最终会完全填满堆栈,因此您会遇到经典的 stack overflow 错误。
在无限循环中,您不存储任何内容,您只是经常更新变量和类似的东西,这不会占用比这些变量已经占用的内存更多的内存,因此不会中断。但是,如果在循环内的内存中添加内容,例如将元素添加到循环内的列表,则可能会导致无限循环中断。
我的问题是:为什么无限递归崩溃,而不是无限循环?它们都感觉像是普通的永久迭代器,但一个崩溃而另一个没有。我正在寻找 hardware/low-level 响应。在使用 Python 在 Jupyter 上进行实验时,我通常会遇到 Whosebug 错误。另外,当我指的是低级响应时,我指的是计算机硬件(RAM,CPU)中发生的导致无限递归崩溃的事情,而不是无限迭代。
因为无限递归不断将递归调用存储在堆栈中(这是您的应用程序持有的内存之一),所以它最终会完全填满堆栈,因此您会遇到经典的 stack overflow 错误。
在无限循环中,您不存储任何内容,您只是经常更新变量和类似的东西,这不会占用比这些变量已经占用的内存更多的内存,因此不会中断。但是,如果在循环内的内存中添加内容,例如将元素添加到循环内的列表,则可能会导致无限循环中断。