编程小白,编程好难啊~~又有py的问题了
以下是小甲鱼讲py递归的时候的一段“没用递归方法”求正整数阶乘的代码。在假设n=1的情况下的我有一些疑问,直接用#标注在以下代码里了。
# 非递归版本
def recursion(n):
result = n #如果n=1
for i in range(1, n): #range(1,1),试了一下,这东西为空
result *= i #【 result = result * 空 】,这是个神马玩意儿????怎么理解这里。
return result
number = int(input('请输入一个正整数:'))
result = recursion(number)
print('%d 的阶乘是:%d' % (number, result))
'''
请输入一个正整数:6
6 的阶乘是:720
'''
1不进入循环直接返回,range(1,1)是空范围 本帖最后由 hhzczy 于 2018-10-25 23:02 编辑
塔利班 发表于 2018-10-25 22:48
1不进入循环直接返回,range(1,1)是空范围
我知道1不循环,因为1的阶乘就是它自己嘛,没有人跟它乘。
单纯看代码:
我好奇的是第4行range(1, 1)是个“空”
那么for i in range(1, 1): 就表示这个“空的range里边的元素”,这是个什么东西呢?
第5行这个东西还要去和result去乘 空范围所以取不出来元素,所以不循环,result在循环里乘,
所以谁和他乘?? 本帖最后由 hhzczy 于 2018-10-25 23:08 编辑
塔利班 发表于 2018-10-25 23:04
空范围所以取不出来元素,所以不循环,result在循环里乘,
所以谁和他乘??
也就是:
n=1 的时候,第4、5行都不起作用是吧?
直接卡从第3行跳到6行?
还是说:1*空=1 hhzczy 发表于 2018-10-25 23:07
也就是:
n=1 的时候,第4、5行都不起作用是吧?
直接卡从第3行跳到6行?
对啊。。
页:
[1]