提问者:小点点

有人能解释一下这个递归吗?谢谢


def power(x,y):
    if y==0:
        return 1
    else:
        return x*power(x,y-1)

print(power(2,3))

代码的输出是8,为什么是8,是2**3?


共1个答案

匿名用户

假设x=2和y=3

这个函数将运行。每次运行它都会执行x*something_to_get。

现在它试图找到something_to_get是什么。嗯something_to_get=power(x, y-1)(这里x=2和y=2)所以它做power(x,y-1)。同样的事情在power(x,y-1)中再次发生。它会如此x*something_to_get。something_to_get是power(x,y-1)(这里x=2和y=1)

此过程继续发生,直到y=0。它返回1。

最后你会有2*2*2*1=2**3=8