求大佬帮忙
def power(x, y):if y:
return x * power(x, y-1)
else:
return 1
print(power(2, 3))
这是课后作业,我没看懂意思,求大佬帮忙写个解析!!!
本帖最后由 heidern0612 于 2020-5-27 10:10 编辑
定义一个函数,如果y不为零的话,就返回当前函数的递归调用,y自减1。
如果y为零的话,就返回1
本帖最后由 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
heidern0612 发表于 2020-5-27 09:57
定义一个函数,如果y不为零的话,就返回当前函数的递归调用,y自减1。
如果y为零的话,就返回1
你好像理解错题意了{:10_297:}递归噻
页:
[1]