鱼C论坛

 找回密码
 立即注册
查看: 2010|回复: 7

[已解决]关于for循环返回结果的一些问题

[复制链接]
发表于 2019-6-11 11:06:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在书中第六章,函数中,递归这一节里,其中
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

求大神解答。。。
最佳答案
2019-6-11 11:10:04
设n=5
循环前result = 5
第一次循环result= 5* 1
第二次result=5*1*2
3次result=5*1*2*3
4次result=5*1*2*3*4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-11 11:08:57 | 显示全部楼层
result *= i等价于 result =result * i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 11:10:04 | 显示全部楼层    本楼为最佳答案   
设n=5
循环前result = 5
第一次循环result= 5* 1
第二次result=5*1*2
3次result=5*1*2*3
4次result=5*1*2*3*4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 11:14:32 | 显示全部楼层
shake_a_tree@16 发表于 2019-6-11 11:08
result *= i等价于 result =result * i

这里面是没有加号的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-11 11:15:41 | 显示全部楼层
冬雪雪冬 发表于 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
请问一下这个怎么理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 11:34:20 | 显示全部楼层
不是result ** i
是result *= i
如果是result ** i,计算的乘方,但没有赋值给任何变量名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 16:23:52 | 显示全部楼层
wangxinnan 发表于 2019-6-11 11:15
如果是这样算的话,
>>> def recursion(n):
        result = n

以为你那个result**i是没有意义的,你写成result=result**i,再试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-12 22:19:42 | 显示全部楼层
设n=5
那么,result *= i   就为 5*1*2*3*4,而且前面你也说了,是递归函数,递归函数的核心就是调用自己,如果改为result ** i的话,并不是递归函数,并且 for循环至取最后一次结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 18:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表