芥末a 发表于 2020-3-3 18:16:44

关于用递归求幂运算的问题

这是python022讲的课后习题,课后答案的方法我看懂了,但是我自己的方法我不知道该怎么改正
def power(x,y):
    if y == 1:
      return 1
    else:
      y -= 1
      return x*power(x,y)
      
print(power(2,3))


用这个代码只能求出来x的y-1次幂。如果我把y-=1放在return后面这个语句就不会执行程序报错了。
改成return x*power(x,y+1)一样会报错,这一条为什么会报错我不太懂
还有就是该如何改进我这个程序才能正确运行啊

zltzlt 发表于 2020-3-3 18:20:39

把 y == 1 改为 y == 0,因为任何一个数的 0 次方(不是 1 次方)都为 1 。

代码帮你改好了:

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


print(power(2, 3))

芥末a 发表于 2020-3-3 18:23:07

zltzlt 发表于 2020-3-3 18:20
把 y == 1 改为 y == 0,因为任何一个数的 0 次方(不是 1 次方)都为 1 。

代码帮你改好了:

啊对啊!!!我脑子秀逗了。。。
感谢感谢感谢
页: [1]
查看完整版本: 关于用递归求幂运算的问题