如何编写求n的阶乘的正确代码?现有阶乘代码输出始终为0
阶乘计算问题的修复方案
问题根源
你的代码中使用了range(n),这个函数生成的序列是0, 1, 2, ..., n-1。当输入的n≥2时,循环过程中会乘到0,直接导致最终结果变为0,这和阶乘的定义(n! = 1×2×…×n)不符。
正确实现代码
n = int(input("Enter a number: ")) p = 1 for i in range(1, n+1): p *= i print(p)
解决方法
- 调整循环范围:把
range(n)替换为range(1, n+1),让循环变量i从1遍历到n,完全匹配阶乘的乘法逻辑。 - 兼容边界场景:修正后的代码自然支持
n=0或n=1的情况(0!和1!的结果都是1),无需额外判断。
内容的提问来源于stack exchange,提问作者Lucky Singh
相关产品推荐
相关产品推荐

