它是一个 Python 程序,使用递归查找用户输入的数字的阶乘。但它会产生错误"previous lines repeated 995 times"


factorial = 1
def fact(a):
if(a==0):
return 1
else:
return fact(a)*fact(a-1)
num = int(input("Enter a number : "))
print(fact(num))

它是一个 Python 程序,使用递归查找用户输入的数字的阶乘。 但它会产生错误

"以前的台词重复了995次">

尝试:

def fact(a):
if a == 0 or a == 1:
return 1
else:
return a*fact(a-1)
num = int(input("Enter a number : "))
print(fact(num))

阶乘的定义是
n! = n * (n - 1)!: 你正在尝试:n! = n! * (n - 1)!,行fact(a)*fact(a-1)

此外,变量factorial也不是必需的,因为它未使用。

问题的根本原因在于递归调用(fact(a( * fact(a-1((

将此行更改为(a * fact(a-1((将解决问题。 此外,可以选择删除else检查,因为它不是必需的。

以下是更新的工作示例:

# File name:  factorial.py
factorial = 1
def fact(a):
if( a<= 1 ):
return 1
return (a * fact(a-1))
num = int(input("Enter a number : "))
print(fact(num))

输出:

> python factorial.py
Enter a number : 99
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000

问题出在您的阶乘实现中。应该是fact(a) = a * fact(a-1)

尝试:

def fact(a):
if a == 0:
return 1
else:
return a*fact(a-1)

最新更新