我试图更好地理解递归。
作为示例,这里有两个用于计算n的定义! :
def factorial(num, p=1):
if num == 0:
return p
else:
p *= num
return factorial(num-1,p)
和
def factorial(num):
if num == 1:
return num
return num * factorial(num - 1)
一个比另一个好吗?我知道第二个建立一个调用栈,而第一个则在每个步骤计算p并将其传递给函数的另一个迭代。这些功能类型是否有单独的名称?第一个不是递归吗?
只需在此处寻求一些理解差异的指导。谢谢!
答案 0 :(得分:0)
两者之间几乎没有区别。我会说“越简单越好”,第二个涉及较少的变量,所以我会选择那个。
或更简单的东西:
def factorial(N): return max(1,N) if N<3 else N*factorial(N-1)
但是在现实生活中,您不应该递归实现它,因为迭代解决方案会更快。