You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python for循环实现阶乘及range反向遍历逻辑问题咨询

阶乘代码第4行反向遍历逻辑解释

首先贴出完整参考代码:

# factorial program
n = int(input())
fact = 1
for i in range(n,1,-1):      #line4 #  this line print the range in reverce
    fact = fact*i
print(fact)

核心运行逻辑

这行for循环能实现从n开始反向取值,完全靠Python内置range()函数的传参规则实现,没有特殊逻辑:

  • range()的三个参数顺序固定为:range(起始值, 终止边界, 步长),取值始终遵循左闭右开原则——也就是会取到起始值,但永远不会取到终止边界值,碰到边界就直接停止遍历。
  • 对应这行的三个参数作用分别是:
    • 第一个参数传n:指定遍历的第一个值就是用户输入的n,循环第一轮运行时i的值就等于n
    • 第二个参数传1:指定遍历的停止边界,因为左闭右开的规则,取值到2就会停,不会取到1,刚好和阶乘乘到2、初始fact为1(相当于已经乘了1)的计算逻辑匹配
    • 第三个参数传-1:这是实现反向遍历的关键——步长为正数时,每次取值比上一个值大对应步长;步长为负数时,每次取值就比上一个值小对应步长,这里传-1就代表每轮循环取的i比上一轮小1

举个实际例子就能快速理解:如果输入n=5,这行range生成的遍历序列就是5、4、3、2,循环会依次把这些值乘到初始值为1的fact变量上,最终算出1*5*4*3*2=120,也就是5的阶乘结果。
顺带提一句,这行自带的注释有两个小问题:一是这行不会执行打印操作,只是生成遍历序列;二是注释里的"reverce"是拼写错误,正确拼写是reverse。

内容的提问来源于stack exchange,提问作者Abhinav kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:33:17