Guidelines

반볡문과 μž¬κ·€ ν•¨μˆ˜ 비ꡐ

1λΆ€ν„° 정해진 μˆ«μžκΉŒμ§€μ˜ 곱을 μ˜λ―Έν•˜λŠ” νŒ©ν† λ¦¬μ–Ό(Factorial)은 λ°˜λ³΅λ¬Έμ΄λ‚˜ μž¬κ·€ ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄ μ½”λ“œλ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이번 μˆ˜μ—…μ—μ„œλŠ” 반볡문과 μž¬κ·€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŒ©ν† λ¦¬μ–Όμ„ κ³„μ‚°ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


반볡문으둜 νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°

λ°˜λ³΅λ¬Έμ„ ν™œμš©ν•΄ νŒ©ν† λ¦¬μ–Όμ„ κ΅¬ν•˜λ €λ©΄, μ•„λž˜μ™€ 같이 for 문을 μ‚¬μš©ν•΄ 1λΆ€ν„° nκΉŒμ§€μ˜ 수λ₯Ό μ°¨λ‘€λ‘œ κ³±ν•˜μ—¬ κ²°κ³Όλ₯Ό 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

반볡문으둜 νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°
def factorial_iterative(n): result = 1 for i in range(1, n + 1): result *= i return result print(factorial_iterative(5)) # 120

μž¬κ·€ ν•¨μˆ˜λ‘œ νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°

μž¬κ·€ ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄ νŒ©ν† λ¦¬μ–Όμ„ κ΅¬ν•˜λ €λ©΄, μ•„λž˜μ™€ 같이 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ factorial_recursive 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λ©° νŒ©ν† λ¦¬μ–Όμ„ 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

μž¬κ·€ ν•¨μˆ˜λ‘œ νŒ©ν† λ¦¬μ–Ό 계산 μ˜ˆμ‹œ
def factorial_recursive(n): if n == 1: return 1 else: return n * factorial_recursive(n - 1) print(factorial_recursive(5)) # 120

두 방법은 μ–΄λ–»κ²Œ λ‹€λ₯ΌκΉŒμš”?

반볡문과 μž¬κ·€ ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄ κ΅¬ν˜„ν•œ νŒ©ν† λ¦¬μ–Όμ˜ κ²°κ³ΌλŠ” λ™μΌν•˜μ§€λ§Œ, 두 방법은 λ‹€μŒκ³Ό 같은 차이점이 μžˆμŠ΅λ‹ˆλ‹€.

  • 속도: 일반적으둜 λ°˜λ³΅λ¬Έμ€ μž¬κ·€ ν•¨μˆ˜λ³΄λ‹€ λΉ λ¦…λ‹ˆλ‹€. μž¬κ·€ ν•¨μˆ˜λŠ” ν•¨μˆ˜λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ 계속 ν˜ΈμΆœν•˜κΈ° λ•Œλ¬Έμ— λ°˜λ³΅λ¬Έλ³΄λ‹€ 느릴 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ©”λͺ¨λ¦¬ μ‚¬μš©: μž¬κ·€ ν•¨μˆ˜λŠ” 자기 μžμ‹ μ„ κ³„μ†ν•΄μ„œ ν˜ΈμΆœν•˜κΈ° λ•Œλ¬Έμ— 보닀 더 λ§Žμ€ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

μž¬κ·€ ν•¨μˆ˜λŠ” μ½”λ“œκ°€ κ°„κ²°ν•˜κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ μž₯점이 μžˆμ§€λ§Œ, λ°˜λ³΅λ¬Έλ³΄λ‹€ μ„±λŠ₯이 λ–¨μ–΄μ§ˆ 수 μžˆμœΌλ―€λ‘œ μ‚¬μš© μ‹œ μ£Όμ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

Mission
0 / 1

일반적으둜 μž¬κ·€ ν•¨μˆ˜λŠ” 속도가 λΉ λ₯΄κ³  λ©”λͺ¨λ¦¬λ₯Ό 적게 μ‚¬μš©ν•œλ‹€.

O
X

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result