suger-coco 发表于 2020-5-27 09:55:47

求大佬帮忙

def power(x, y):
    if y:
      return x * power(x, y-1)
    else:
      return 1
   
print(power(2, 3))
这是课后作业,我没看懂意思,求大佬帮忙写个解析!!!

heidern0612 发表于 2020-5-27 09:57:45

本帖最后由 heidern0612 于 2020-5-27 10:10 编辑

定义一个函数,如果y不为零的话,就返回当前函数的递归调用,y自减1。

如果y为零的话,就返回1

Twilight6 发表于 2020-5-27 10:01:53

本帖最后由 Twilight6 于 2020-5-27 10:08 编辑

要知道Python中 只要 0 、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False
只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True
所以代码用 y 直接作为判断条件,只要y不等于0 就会执行if 代码块里面的语句
def power(x, y):# 传入 x = 2,y = 3
    if y:# y只要不等于0条件成立
      return x * power(x, y - 1)# 递归 power(2,2) -> power(2,1) -> power(2,0)

    else:
      return 1# 当 y = 0 时候返回 1则递归返回结果是1*x*x*x

print(power(2, 3))


power(2,0)返回 1
power(2,1)返回 x*power(2,0) 即 x*1
power(2,2)返回 x*power(2,1) 即 x*x*1
power(2,3)返回 x*power(2,2) 即 x*x*x*1

所以结果为 2*2*2*1

Twilight6 发表于 2020-5-27 10:04:47

heidern0612 发表于 2020-5-27 09:57
定义一个函数,如果y不为零的话,就返回当前函数的递归调用,y自减1。

如果y为零的话,就返回1

你好像理解错题意了{:10_297:}递归噻
页: [1]
查看完整版本: 求大佬帮忙