我正在努力更好地理解递归。你知道吗
作为一个例子,这里有两个定义来计算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并将其传递给函数的另一个迭代。这些类型的函数有单独的名称吗?第一个不是递归吗?你知道吗
只是想在这里寻找一些关于理解差异的指导。谢谢!你知道吗
两者之间没有什么区别。我会说“越简单越好”,第二个包含的变量越少,所以我会选择那个。你知道吗
或者更简单的事情:
但是在现实生活中,你不应该递归地实现它,因为迭代解会更快。你知道吗
相关问题 更多 >
编程相关推荐