π’ ΠΠ°ΠΊ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Π½Π° ΠΏΠΈΡΠΎΠ½? Π£Π·Π½Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
# Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result
# Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠΈ
def factorial_recursive(n):
if n == 0:
return 1
else:
return n * factorial_recursive(n-1)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ `factorial` ΠΈΠ»ΠΈ `factorial_recursive`, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΉ ΡΠΈΡΠ»ΠΎ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» ΡΠΈΡΠ»Π° 5, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
print(factorial(5))
print(factorial_recursive(5))
ΠΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Π½Π° ΠΏΠΈΡΠΎΠ½
Π€Π°ΠΊΡΠΎΡΠΈΠ°Π» - ΡΡΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° n. ΠΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» ΡΠΈΡΠ»Π° n ΠΊΠ°ΠΊ n! ΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
n! = n * (n-1) * (n-2) * ... * 3 * 2 * 1
ΠΠ»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Π½Π° ΠΏΠΈΡΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎ ΡΠΈΡΠ»Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΡ:
1. Π Π°ΡΡΠ΅Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°
ΠΠ»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°, Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ n. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
def factorial_with_loop(n):
factorial = 1
for i in range(1, n+1):
factorial *= i
return factorial
n = 5
result = factorial_with_loop(n)
print(f"Π€Π°ΠΊΡΠΎΡΠΈΠ°Π» ΡΠΈΡΠ»Π° {n} ΡΠ°Π²Π΅Π½ {result}")
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ factorial_with_loop, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ n. ΠΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ factorial ΡΠ°Π²Π½ΠΎΠΉ 1, Π° Π·Π°ΡΠ΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ n Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ factorial. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ factorial, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Ρ ΡΠΈΡΠ»Π° n. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ print.
2. Π Π°ΡΡΠ΅Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠΈ
Π Π΅ΠΊΡΡΡΠΈΡ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π°. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠ΄:
def factorial_with_recursion(n):
if n == 0:
return 1
else:
return n * factorial_with_recursion(n-1)
n = 5
result = factorial_with_recursion(n)
print(f"Π€Π°ΠΊΡΠΎΡΠΈΠ°Π» ΡΠΈΡΠ»Π° {n} ΡΠ°Π²Π΅Π½ {result}")
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ factorial_with_recursion, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ n. ΠΡΠ»ΠΈ n ΡΠ°Π²Π½ΠΎ 0, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ 1 (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» 0 ΡΠ°Π²Π΅Π½ 1). ΠΡΠ»ΠΈ n Π½Π΅ ΡΠ°Π²Π½ΠΎ 0, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ factorial_with_recursion Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ n-1 ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° n. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ n=0, ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ print.
3. ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ±Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Π½Π° ΠΏΠΈΡΠΎΠ½. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ΅ΡΡΡ:
- Π¦ΠΈΠΊΠ»: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° Π² ΡΡΠ½ΠΊΡΠΈΠΈ factorial_with_loop ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠΎΠ΄. Π¦ΠΈΠΊΠ»Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
- Π Π΅ΠΊΡΡΡΠΈΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈ factorial_with_recursion ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΌ ΠΈ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·.
ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠΌΡΠΎΡΡΠ° Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Π½Π° ΠΏΠΈΡΠΎΠ½! ΠΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π°: ΡΠ°ΡΡΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π° ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΠ±Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ²ΠΎΠΈ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.