Recursion

์žฌ๊ท€ํ•จ์ˆ˜๋Š” base case์™€ recursive case๋กœ ๋‚˜๋ˆ ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. recursive case๋Š” ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋” ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ‘ธ๋Š” case์ด๊ณ  base case๋Š” ๋” ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ ๋„ ๋ฐ”๋กœ ๋‹ต์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜์™€ ๋ฐ˜๋ณต๋ฌธ์€ ์„œ๋กœ ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด

print("# n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ด")
# 0 1 1 2 3 5 8 13 21 ...
def fib(n):   
    if n ==1 or n == 2: # base case
        return 1
    else: # recursive case
        return fib(n-1) + fib(n-2)

# ํ…Œ์ŠคํŠธ: fib(1)๋ถ€ํ„ฐ fib(10)๊นŒ์ง€ ์ถœ๋ ฅ
for i in range(1, 11):
    print(fib(i))

ํ•ฉ

print("# 1~10๊นŒ์ง€ ํ•ฉ๊ตฌํ•˜๊ธฐ")
def triangle_number(n):
    if n == 1: # base case
        return 1    
    return n + triangle_number(n - 1) # recursive case

for i in range(1, 11):
    print(triangle_number(i))

๋ฆฌ์ŠคํŠธ ๋’ค์ง‘๊ธฐ

Last updated

Was this helpful?