# Factorial help

Hello! I've got a task to list first 100 factorial numbers iterative and recursive. This is my attempt for the recursive code, but it doesn't seem to get the output my teacher wants. def faktor(n): faktor = (n + 1) * n if n <= 0: return n else: return (n + 1) * n print(faktor(100)) I've also tried with n-1 Can you give me some advice to make it work? Thank you!

5/13/2021 6:33:46 AM

Kajtár László6 Answers

New AnswerCorrect answer: ————————— def fact(n) : if n == 1: return n else: return n*fact(n-1) num = int(input()) if num==0: print(1) elif num<0: print("fact not exists") else: print(fact(num))

Wanna see the twisted one, it's fast too def factorial(n): return eval("*".join(map(str,range(1,n+1)))) also added the code here: https://code.sololearn.com/c6K7HkxeJARv/?ref=app

Iterative Approach ___________________ f = 1 n = int(input()) if n==0: print(1) elif n<0: print("fact not exists") else: while n!=0: f *= n n -= 1 print(f) Recursive Approach ____________________ def fact(n) : if n == 1: return n else: return n*fact(n-1) num = int(input()) if num==0: print(1) elif num<0: print("fact not exists") else: print(fact(num))

Here's the iterative approach: n = 1 for i in range(100): print(n := (n * (i + 1))) Here's the recursive approach: def fact(n): if n < 2: return n return fact(n - 1) * n for i in range(100): print(fact(i)) # Hope this helps I'd prefer to use the iterative approach, as the latter one is memory-inefficient and comparatively more complex.