递归在Python中是“不好的”,因为它通常比迭代解决方案要慢,并且因为Python的堆栈深度不是无限的(并且没有尾调用优化)。对于求和函数,是的,您可能想要无限的深度,因为要对一百万个数字进行求和是完全合理的,而性能差异将成为包含大量项的问题。在这种情况下,您不应使用递归。
另一方面,如果要遍历从XML文件读取的DOM树,则不可能超过Python的递归深度(默认为1000)。当然 可以,
但是实际上不行。当您知道要使用哪种数据时,您可以确信不会溢出堆栈。
在我看来,递归树遍历比迭代遍历更自然地进行写入和读取,并且递归开销通常只占运行时间的一小部分。如果对您来说真正重要的是,它花费了16秒而不是14秒,那么扔PyPy可能是您更好地利用时间的方法。
递归似乎很自然地适合您所发布的问题,如果您认为代码更易于阅读和维护,并且性能足够,那么就去做吧。
我从小在计算机上编写代码,实际上,将递归深度限制为大约16(如果有的话),所以对我来说1000似乎很豪华。:-)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)