簡體   English   中英

它是一個 python 程序,用於使用遞歸查找用戶輸入數字的階乘。 但它會產生錯誤“前幾行重復 995 次”

[英]it is a python program to find factorial of a user entered number using recursion. but it generates error “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)! 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))

Output:

> 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM