zerotwo020202 发表于 2023-4-18 13:45:17

python中用迭代的方法求阶乘

def iterate(N):
    result = 1
    while N > 1:
      result *= N
      N -= 1
    if N == 1 | N == 0:
            return result

迭代 = input("请输入一个非负整数:")
N = int(迭代)
print(f"{N}! =", iterate(N))

请输入一个非负整数:5
5! = None

请问大佬,为什么没有返回result的值?

isdkz 发表于 2023-4-18 13:48:09

您的代码中,如果输入的是 0 或 1,那么 N 不会进入 while 循环,因此不会执行 result *= N 的语句。在这种情况下,函数没有返回值,因为没有 return 语句覆盖这种情况。您可以添加一个 return 语句,以便在输入为 0 或 1 时返回正确的结果。此外,您的逻辑运算符应该使用两个竖线(||),而不是单个竖线(|),因为单个竖线是按位或运算符,而不是逻辑或运算符。

下面是已经修正的代码:

def iterate(N):
    result = 1
    while N > 1:
      result *= N
      N -= 1
    if N == 1 or N == 0:
      return result
    else:
      return None

迭代 = input("请输入一个非负整数:")
N = int(迭代)
print(f"{N}! =", iterate(N))

现在,如果您输入 0 或 1,代码将正确返回 1,否则将返回 N 的阶乘。

zerotwo020202 发表于 2023-4-18 14:01:09

isdkz 发表于 2023-4-18 13:48
您的代码中,如果输入的是 0 或 1,那么 N 不会进入 while 循环,因此不会执行 result *= N 的语句。在这种 ...

好的,谢谢大佬,是我或运算符写错了
页: [1]
查看完整版本: python中用迭代的方法求阶乘