Python

Процедуры и ф-ции python

принцип работы процедур и функций в среде программирования python.
напишите функцию, которая вычисляет факториал натурального числа N
AP
Anton Pavlov
220
 def f(n):   
p = 1
while n: p *= n; n -= 1
return p
while True: print(f(int(input('n: '))))
У нас число 0 не считается натуральным, а в стандартах ISO считается, поэтому так. И рекурсии, конечно же, здесь никакой не требуется от слова "совсем"!
А теперь запустим на дроиде такую программу, вычисляющую факториал натурального числа тремя различными функциями - с циклом while, с циклом for и с рекурсивным вызовом (только без печати больших чисел, которые смотреть не нужно, а нужно лишь смотреть время выполнения !) и посмотрим сколько что будет выполняться в секундах:
 from time import time 
def f(n):
p = 1
while n: p *= n; n -= 1
return p
def fact(n):
p = 1
for i in range(1, n + 1): p *= i
return p
def factorial(n):
return n * f(n - 1) if n else 1
while True:
n, t = int(input('n: ')), time()
f(n); T = time(); print(T - t)
fact(n); t = time(); print(t - T)
factorial(n); print(time() - t)
Все три способа вполне нормальные, даже с рекурсией! И sys.setrecursionlimit совершенно не потребуется если IDE нормально настроена. Мне вот лично она в программе совершенно не потребовалась, так что мистер Лутц ни в чём не виноват!
Руслан Велибеков
Руслан Велибеков
66 572
Лучший ответ
 def factorial(n):return n * factorial(n-1) if n > 0 else 1 
print(factorial(5))
 def factorial(n, acc=1):  
if not n:
return acc
return factorial(n-1, n*acc)

print(factorial(10))
Дима Климов
Дима Климов
5 840
Владимир Афанасьев Попробуй посчитать своей функцией факториал от 1000.