关于for循环返回结果的一些问题
在书中第六章,函数中,递归这一节里,其中def recursion(n):
result = n
for i in range(1,n):
result *= i
return result
我们应该如何理解,为什么是返回的结果是1*2*3*4*5啊?
按照for循环,range(1,n),假设n为5,那么返回应该是1,2,3,4
result *= i
就是5 *= i
那最终return result不是应该为5*1 +5*2+ 5*3+ 5*4的结果么?
网上也没查到合理的解释
如果强行就是理解为阶乘,可是后来我做了测试那么下边 ** 应是冥次方,为什么返回的结果又是5了?
>>> def recursion(n):
result = n
for i in range(1,n):
result ** i
return result
>>> recursion(5)
5
求大神解答。。。 result *= i等价于 result =result * i 设n=5
循环前result = 5
第一次循环result= 5* 1
第二次result=5*1*2
3次result=5*1*2*3
4次result=5*1*2*3*4 shake_a_tree@16 发表于 2019-6-11 11:08
result *= i等价于 result =result * i
这里面是没有加号的 冬雪雪冬 发表于 2019-6-11 11:10
设n=5
循环前result = 5
第一次循环result= 5* 1
如果是这样算的话,
>>> def recursion(n):
result = n
for i in range(1,n):
result ** i
return result
>>> recursion(5)
5
请问一下这个怎么理解呢? 不是result ** i
是result *= i
如果是result ** i,计算的乘方,但没有赋值给任何变量名。 wangxinnan 发表于 2019-6-11 11:15
如果是这样算的话,
>>> def recursion(n):
result = n
以为你那个result**i是没有意义的,你写成result=result**i,再试试。 设n=5
那么,result *= i 就为 5*1*2*3*4,而且前面你也说了,是递归函数,递归函数的核心就是调用自己,如果改为result ** i的话,并不是递归函数,并且 for循环至取最后一次结果
页:
[1]