这段代码中阶乘 *= i 是什么意思?

问题描述 投票:0回答:1
def calculate_factorial(n):
    factorial = 1
    for i in range(1, n + 1):
        factorial *= i
    return factorial
print(calculate_factorial(5))

我必须创建一个代码块来计算calculate_factorial(n)中任何给定数字的阶乘。

我不明白该怎么做,所以我用谷歌搜索了答案,但没有解释每行的含义。 第 1 行。我理解定义“calculate_factorial(n)”是将“calculate_factorial(n)”定义为变量,并在调用并给定值时运行该块,就像在块末尾一样。

不确定: 第 2 行。阶乘保存值 1。第 3 行。in for i in range 是一个循环,'(1, n+1)',因为我想要值 1 到 n,因为最后一个数字没有被计算在内。 4.我猜是1倍范围?那为什么不呢?例如,我给出了(5),那么它不应该循环(1×1、1×2、1×3、1×4、1×5)吗? 5. 返回“阶乘 *= i”的答案?

继续烤我吧,我是新人,但是请在“不确定:”之后告诉我哪里错了。我也可以输入我尝试过的内容,但很尴尬。我正在使用 while 循环和 if/break。

python function for-loop while-loop factorial
1个回答
0
投票

factorial *= i
factorial = factorial * i
的简写符号。对于范围内的每个元素
i
,阶乘变量将更新为其旧值乘以 i。

例如:

鉴于

n = 5

factorial = 1
for i in range(1, n + 1):
  factorial *= i

变成:

factorial = 1
i = 1: factorial_next = factorial_prev * i = 1 * 1 = 1
i = 2: factorial_next = factorial_prev * i = 1 * 2 = 2
i = 3: factorial_next = factorial_prev * i = 2 * 3 = 6
i = 4: factorial_next = factorial_prev * i = 6 * 4 = 24
i = 5: factorial_next = factorial_prev * i = 24 * 5 = 120

因为

i = n
range
的第二个参数始终是独占的,就像上面提到的那样)循环结束并且函数返回 120,即 5! (
factorial(5)
).

© www.soinside.com 2019 - 2024. All rights reserved.