计算n的阶乘时输出始终为0,求正确的Python实现代码
问题分析
你的代码输出始终为0的原因是range(n)生成的数值序列是从0开始到n-1结束,第一次循环时i=0,执行p *= i后p就变成了0,之后不管再乘多少数,结果都会保持0。
正确的阶乘实现代码
循环实现
n = int(input("Enter a number: ")) p = 1 # 从1循环到n(包含n) for i in range(1, n + 1): p *= i print(p)
递归实现(可选)
如果想用递归方式实现,也可以这样写:
def factorial(n): if n == 0 or n == 1: return 1 return n * factorial(n - 1) n = int(input("Enter a number: ")) print(factorial(n))
另外可以补充输入验证逻辑,比如判断输入是否为非负整数,避免传入负数导致计算异常。
内容的提问来源于stack exchange,提问作者Aakash Kumar Singh
相关产品推荐
相关产品推荐

