规范代码不返回整数与其之前的所有整数的乘积

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

填充空格以使阶乘函数返回n的阶乘。然后,打印带有相应编号的前10个阶乘(从0到9)。请记住,数字的阶乘定义为一个整数与其之前的所有整数的乘积。

def factorial(n):
    result = 1
    for x in range(0,10):
        result = result * x
    return x

for n in range(0,10):
  print(n, n*factorial(n+1))

输出:

0 0
1 9
2 18
3 27
4 36
5 45
6 54
7 63
8 72
9 81
python range factorial
1个回答
0
投票

让我们从factorial功能开始:

def factorial(n):
    result = 1
    for x in range(0, 10):
        result = result * x
    return x

您总是为每个n做10次乘法。但是,例如,对于3!,您只需要3个乘法,因为3! = 1 * 2 * 3 = 6。您会看到,对于每个n,您都需要n乘法。您可以承认,我们总是从1开始而不是从0开始乘法。这就是为什么您的for循环如下所示:

for x in range(1, n + 1):
    result = result * x

同样在您的代码中,您返回x。在您的代码中它将始终等于9。因为它将是range(0, 10)的最后一个值。

这就是为什么您得到这些答案的原因:

0 0 # 0 * 9
1 9 # 1 * 9
2 18 # 2 * 18

此外,您不需要将函数结果乘以任何值。仅调用factorial(num)将返回正确的结果。

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