我们如何使用循环来计算阶乘,while循环?

问题描述 投票:0回答:2

我编写了一段代码,以便我可以使用 python 中的循环方法计算阶乘。但是当我运行我的程序(下面提供)时,我的行为就像一个无限循环。帮我把它拿出来。

a = int(input('n...'))

while a >= 0:
      a *= a - 1
      print(a)
python while-loop factorial
2个回答
0
投票

您在循环中重新计算

a
,因此
a-1
是根据新值而不是原始值计算的。

例如,如果原始输入是4,则执行以下计算:

a *= 3

结果为 12。

然后在下一次循环迭代中,执行此计算:

a *= 11

结果为 132。

然后在下一次循环迭代中,执行此计算:

a *= 131

等等等等。

您需要记录 a 的原始值,并从中减一。


0
投票

代码中的问题是您正在更新同一变量

a
,同时检查 while 循环条件中它是否大于 0。如果
a
乘以任何非零数字,您的代码将始终进入无限循环。以下是纠正方法:

a = int(input('n...'))
factorial = 1

while a > 0:
    factorial *= a
    a -= 1

print(f'The factorial is: {factorial}')
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.