关于递归的小问题
本帖最后由 Peteryo01223 于 2020-9-28 10:22 编辑原题目:
使用递归编写一个 power() 函数模拟内建函数 pow(),即 power(x, y) 为计算并返回 x 的 y 次幂的值。
标准答案:
def power(x, y):
if y:
return x * power(x, y-1)
else:
return 1
print(power(2, 3))
提问:
1. if y 这类用法,看到很多次,不理解它在表达什么。是指"当 y 为 true 的情况下"吗?。小甲鱼在哪一堂课讲过呀?
2. 原题目中,”。。。 power() 函数模拟内建函数 pow(),即。。。“,后面的 pow() 是否少写了一个”er“呢?哪里来的一个新函数叫做 pow()?
3. else: return 1 请问:这一条code,是不是小甲鱼一直强调的”设置了正确的返回条件“ 呢?这个条件,怎么能够让递归停止呢?我为何看不到 1 的输出呢,是不是乘以1的时候,递归就自动停止了? 1, if y的意思是y不为0,因为python只有空的list, 空的set, 空的dict, 空的tuple, 0, False, None被判断为假,而y是整形,所以if y的意思是y不为0
2,pow是内建函数(built-in-function) 题目是定义一个函数power做到和pow一样的功能
3,因为1是返回值,并不是print
example:
power(3,2) -> 3*power(3,1) -> 3*3*power(3,0) -> 3*3*1 -> 9
power(3,0)的时候y==0,所以return 1 kcal 发表于 2020-9-28 10:35
1, if y的意思是y不为0,因为python只有空的list, 空的set, 空的dict, 空的tuple, 0, False, None被判断为 ...
牛
页:
[1]