热线电话:13121318867

登录
2019-02-21 阅读量: 922
不使用return,函数是否仍然是递归的?

我编写了以下代码,用于计算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而是返回。

0.0000
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子