[TIL-20260204] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ - ์žฌ๊ท€ ํ•จ์ˆ˜ (Recursive Function)

2026. 2. 4. 16:11ยทToday I Learned ๐Ÿง

๐Ÿ€ To Do List

โœ”๏ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ฐ•์˜ - ์žฌ๊ท€ ํ•จ์ˆ˜

โœ”๏ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ - token ์žฌ๋ฐœ๊ธ‰ ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€์ค‘

 

๋ณ‘์› ๋‹ค๋…€์˜ค๋А๋ผ ๋งŽ์ด ๋ชป ํ–ˆ๋‹ค. ์กฐ๊ธ‰ํ•ด ํ•˜์ง€ ๋ง๊ณ  ๊พธ์ค€ํžˆ ํ•ด๋ณด์ž !

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Today I Learned ...

 

์žฌ๊ท€ ํ•จ์ˆ˜ (Recursive Function)

  • ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜
  • ์ข…๋ฃŒ ์กฐ๊ฑด ํ•„์ˆ˜
    • ์ข…๋ฃŒ ์กฐ๊ฑด์ด ์—†์œผ๋ฉด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ `Stack Overflow`๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก Tip  ๋กœ์ง์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ์กฐ๋ผ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž.

 

 

 

ํŒฉํ† ๋ฆฌ์–ผ ๊ตฌํ˜„

  • ํŒฉํ† ๋ฆฌ์–ผ์€ 1๋ถ€ํ„ฐ ์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ n๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ณฑํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

์˜ˆ๋ฅผ๋“ค์–ด `5!` ๋Š”  `5! = 5 × 4 × 3 × 2 × 1 = 120`

์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด `n! = n × (n-1) × (n-2) × ... × 2 × 1` ์ด๋‹ค.

 

์ด๋ฅผ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

Factorial(5) = 5 × Factorial(4)
Factorial(4) = 4 × Factorial(3)
Factorial(3) = 3 × Factorial(2)
Factorial(2) = 2 × Factorial(1)
Factorial(1) = 1  ← ์ข…๋ฃŒ ์กฐ๊ฑด

 

def factorial(n):
    if n == 1:  # โญ๏ธ ์ข…๋ฃŒ ์กฐ๊ฑด 
        return 1
    return n * factorial(n-1)  # ์žฌ๊ท€ ํ˜ธ์ถœ

print(factorial(5))  # 120

 

 

 

ํšŒ๋ฌธ(Palindrome) ํŒ๋ณ„ ๊ตฌํ˜„

  • ํšŒ๋ฌธ์€ ๋˜‘๋ฐ”๋กœ ์ฝ์œผ๋‚˜ ๊ฑฐ๊พธ๋กœ ์ฝ์œผ๋‚˜ ๋˜‘๊ฐ™์€ ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

"abcba" ๋ผ๋Š” ๋ฌธ์ž์—ด์ด ํšŒ๋ฌธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

โฌ‡๏ธ      โฌ‡๏ธ  ์ฒซ๋ฒˆ์งธ ๊ธ€์ž์™€ ๋งจ ๋’ค์—์„œ ์ฒซ๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต
a b c b a

 โฌ‡๏ธ   โฌ‡๏ธ    ๋‘๋ฒˆ์งธ ๊ธ€์ž์™€ ๋งจ ๋’ค์—์„œ ๋‘๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต
a b c b a

    โฌ‡๏ธ      ๋งˆ์ง€๋ง‰ ๋‚จ์€ ํ•œ ๊ธ€์ž๋Š” ๋น„๊ต ๋Œ€์ƒ X
a b c b a

 

 

์žฌ๊ท€์  ์‚ฌ๊ณ ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

โฌ‡๏ธ      โฌ‡๏ธ  ์ฒซ๋ฒˆ์งธ ๊ธ€์ž์™€ ๋งจ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต
a b c b a

b c b      ๋น„๊ตํ•œ ๊ธ€์ž๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž˜๋ผ๋‚ด์„œ, ๋น„๊ต ๋ฒ”์œ„๋ฅผ ์ค„์ธ๋‹ค.

โฌ‡๏ธ  โฌ‡๏ธ      ์ฒซ๋ฒˆ์งธ ๊ธ€์ž์™€ ๋งจ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต
b c b

c          ๋น„๊ตํ•œ ๊ธ€์ž๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž˜๋ผ๋‚ด์„œ, ๋น„๊ต ๋ฒ”์œ„๋ฅผ ์ค„์ธ๋‹ค.

โฌ‡๏ธ          ๋งˆ์ง€๋ง‰ ๋‚จ์€ ํ•œ ๊ธ€์ž๋Š” ๋น„๊ต ๋Œ€์ƒ X
c

 

 

๊ฐ™์€ ๊ธ€์ž๋กœ ํŒ๋‹จ๋˜๋ฉด ํ•ด๋‹น ๊ธ€์ž๋“ค์„ ์ œ์™ธํ•˜์—ฌ ๋น„๊ต ๋ฒ”์œ„๋ฅผ ์ค„์ด๊ณ , ์ฒซ๋ฒˆ์งธ ๊ธ€์ž์™€ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋งŒ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.

์ด๋ฅผ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

def is_palindrome(string):
    if len(string) <= 1: # โญ๏ธ ์ข…๋ฃŒ ์กฐ๊ฑด
        return True
    if string[0] != string[-1]:
        return False
    return is_palindrome(string[1:-1])

 

 

 

Python ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์‹ฑ

  • `๋ฌธ์ž์—ด[์‹œ์ž‘์ธ๋ฑ์Šค:๋์ธ๋ฑ์Šค]` ๋กœ ํ‘œ๊ธฐ
  • ๋ฌธ์ž์—ด์˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ž๋ฅด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ์Œ์ˆ˜ ์ธ๋ฑ์‹ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[0:5] # ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ 
                  # 5๋ฒˆ์งธ ์ธ๋ฑ์Šค "์ „"์—์„œ ์ž˜๋ผ์คŒ.
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[0:6] # ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[0:1] # ๊ฐ€
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[3:4] # ๋ผ
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[0:7] # ๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ


"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[1:-3] # ๋‚˜๋‹ค๋ผ
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[1:-2] # ๋‚˜๋‹ค๋ผ๋งˆ
"๊ฐ€๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”์‚ฌ"[1:-1] # ๋‚˜๋‹ค๋ผ๋งˆ๋ฐ”
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL-20260206] Duration์œผ๋กœ ํ† ํฐ ๋งŒ๋ฃŒ ์ž„๋ฐ• ์—ฌ๋ถ€ ์ฒดํฌ  (0) 2026.02.07
[TIL-20260205] Access Token ์žฌ๋ฐœ๊ธ‰ ๊ตฌํ˜„  (0) 2026.02.05
[TIL-20260203] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ - Linked List , ์ด์ง„ ํƒ์ƒ‰(Binary Search)  (0) 2026.02.03
[TIL-20260202] Kotlin data class, enum class  (0) 2026.02.02
[TIL-20260131] Docker ์ด๋ฏธ์ง€ ๋‹ค๋ฃจ๊ธฐ  (0) 2026.01.31
'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TIL-20260206] Duration์œผ๋กœ ํ† ํฐ ๋งŒ๋ฃŒ ์ž„๋ฐ• ์—ฌ๋ถ€ ์ฒดํฌ
  • [TIL-20260205] Access Token ์žฌ๋ฐœ๊ธ‰ ๊ตฌํ˜„
  • [TIL-20260203] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ - Linked List , ์ด์ง„ ํƒ์ƒ‰(Binary Search)
  • [TIL-20260202] Kotlin data class, enum class
ํ•ด๋‹ˆ ๐ŸŒฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
๊ธฐ๋ก์ด ์ž์‚ฐ์ด๋‹ค ( •ฬ€แด—•ฬ )ูˆโœ๏ธ
  • ํ•ด๋‹ˆ ๐ŸŒฑ
    haeni.dev
    ํ•ด๋‹ˆ ๐ŸŒฑ
  • ๋งํฌ

    • github
    • velog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (25)
      • ์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ (4)
      • Today I Learned ๐Ÿง (19)
      • ๋ถ„๋…ธ์˜ ํƒ€์ดํ•‘ ๋กœ๊ทธ ๐Ÿ”ฅ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    IT
    ci/cd
    ์ฝ”ํ…Œ
    ๋ฐฑ์—”๋“œ
    ๊ฐœ๋ฐœ
    springboot
    AWS
    ๊ฐœ๋ฐœ์ž
    til
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
ํ•ด๋‹ˆ ๐ŸŒฑ
[TIL-20260204] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ - ์žฌ๊ท€ ํ•จ์ˆ˜ (Recursive Function)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”