我编写了一段代码,以便我可以使用 python 中的循环方法计算阶乘。但是当我运行我的程序(下面提供)时,我的行为就像一个无限循环。帮我把它拿出来。
a = int(input('n...'))
while a >= 0:
a *= a - 1
print(a)
您在循环中重新计算
a
,因此 a-1
是根据新值而不是原始值计算的。
例如,如果原始输入是4,则执行以下计算:
a *= 3
结果为 12。
然后在下一次循环迭代中,执行此计算:
a *= 11
结果为 132。
然后在下一次循环迭代中,执行此计算:
a *= 131
等等等等。
您需要记录 a 的原始值,并从中减一。
代码中的问题是您正在更新同一变量
a
,同时检查 while 循环条件中它是否大于 0。如果 a
乘以任何非零数字,您的代码将始终进入无限循环。以下是纠正方法:
a = int(input('n...'))
factorial = 1
while a > 0:
factorial *= a
a -= 1
print(f'The factorial is: {factorial}')