我编写了以下代码,用于计算Fibonacci序列:
arr = [0]
i = 1
def get_fib(position):
if position == 0:
return arr[0]
if position > 0:
global i
arr.append(i)
i = i + arr[-2]
get_fib(position - 1)
return arr[position]
这仍然是递归,即使我在get_fib之前没有使用return吗?我是否需要包含函数的返回以进行递归?
解决办法:该函数是递归的,因为它调用自身。所以,不,从技术上讲,你不需要从该调用返回值来递归它。
但是,为了使功能起作用,你可以。考虑这个例子:
def factorial(n):
if n == 0:
return 1
else:
return factorial(n-1) * n
这与:
def factorial(n):
if n == 0:
result = 1
else:
result = factorial(n-1) * n
return result
如果我们将下一行到最后一行更改为以下内容,您认为会发生什么?
factorial(n-1) * n
现在不再result分配,功能可能会失败,声称result没有价值。如果我们以类似的方式更改原件:
def factorial(n):
if n == 0:
return 1
else:
factorial(n-1) * n
它会计算factorial(n-1) * n,但它会简单地丢弃结果,因为在它之后没有语句,函数将返回(!)而不返回语句,None而是返回。








暂无数据