Forum >> Principianti >> Quando si calcola il fattoriale, c'è una restrizione di ricorsione.

Pagina: 1

Sto tentando di sviluppare un programma Python che calcoli il fattoriale di un numero intero. Ho creato il seguente codice:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

Quando eseguo questo codice con un numero significativo di input, ad esempio 100, ottengo un RecursionError. Questo perché il limite di ricorsione di Python è stato superato.


Ho letto in questa pagina che avrei potuto usare la libreria matematica per superare il problema di raggiungere il limite di ricorsione quando si calcola il fattoriale di grandi numeri in Python. Ma devo capire come metterlo in atto. Qualcuno può aiutare?

Grazie in anticipo per la vostra assistenza!
potresti, p.e., NON utilizzare la ricorsione e seguire proprio l'indicazione della regola di calcolo del fattoriale come esposta nella pagina da Te indicata, ad esempio, la funzione da Te esposta da errore di ricorsione per 10000, procedendo da 10000 ad 1 in un ciclo while l'errore non avverrebbe (perché non vi è ricorsione)

factorial(10000)
Traceback (most recent call last):
  File "<pyshell#7>", line 5, in factorial
  File "<pyshell#7>", line 5, in factorial
  File "<pyshell#7>", line 5, in factorial
  [Previous line repeated 996 more times]
  File "<pyshell#7>", line 2, in factorial
RecursionError: maximum recursion depth exceeded in comparison
def my_factorial(n):
    compute = 1
    while n > 1:
        compute *= n
        n -= 1
    return compute

my_factorial(3)
6
my_factorial(10000)
28462596809170545189064... (tanta roba)
per altro, esistono molti altri modi possibili per calcolarsi fattoriali con python, cercando un po' idee ne vengono

Fatti non foste a viver come bruti...
Hello this is Gulshan Negi
Well, I searched about it on the internet and I found that Recursion limit errors are not an issue when calculating the factorial of large numbers with Python's math library. The numerical library gives a capability called factorial() that you can utilize straightforwardly. An illustration of how to use the math library in your code is as follows:





import math




def factorial(n):

if n < 0:

raise ValueError("Factorial is not defined for negative numbers.")

elif n == 0:

return 1

else:

return math.factorial(n)





I hope it is clear now.

Thanks
Messaggio nascosto da :
spam


Pagina: 1



Esegui il login per scrivere una risposta.