我在上一个问题中遇到过这段代码:
a = 1
def func1():
if a == 1:
func2()
def func2():
if a == 1:
func3()
def func3():
func1()
有没有时间使用递归这样比常规循环更有益?如果是这样,何时应该使用它和什么是惯例?
答案 0 :(得分:3)
有递归调用和循环的用法:
使用递归时:
使用循环时
答案 1 :(得分:2)
两者都有其优点和缺点,主要取决于编程语言。
在硬件级别,Recursion带有成本,每次调用函数时,底层机制都必须存储一个指针,指向程序在函数完成后必须在代码中跳转的位置。除此之外,它还必须存储函数参数和局部变量。这一切都存储在程序堆栈中。
然而,在使用递归时,某些问题有一个更自然的解决方案,例如tower of hanoi。
可读性也是一个重要的考虑因素,说实话我相信你的例子可以从循环中受益。
迭代和递归之间的广泛比较here。 总结了优缺点。