如何编写正确的n的阶乘计算代码?为何运行结果恒为0?
阶乘代码输出0的问题修复
你的代码输出0的原因是range(n)生成的序列是从0到n-1的整数,只要n≥1,循环里就会执行p *= 0,一旦p变成0,后续的乘法操作都不会改变结果,最终输出0。
修复后的循环实现
调整range的范围,从1开始到n结束,这样就不会乘到0了:
n = int(input("enter a number.")) p = 1 for i in range(1, n + 1): p *= i print(p)
这个代码能正确处理n=0的情况(0的阶乘是1),因为当n=0时,range(1, 0+1)是空序列,循环不会执行,p保持初始值1,符合阶乘定义。
更简洁的实现方式
Python的math模块内置了阶乘函数,直接调用更高效且严谨,还会自动处理负数输入的错误:
import math n = int(input("enter a number.")) print(math.factorial(n))
内容的提问来源于stack exchange,提问作者Rupam Ghosh
相关产品推荐
相关产品推荐

