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))
print("# n์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๋ฆฌํด")
# n = 123 โ 1+2+3=6
def sum_digits(n):
if n < 10: # base case
return n
else: # recursive case
divide = n // 10
remain = n % 10
return sum_digits(divide) + remain
# ํ
์คํธ
print(sum_digits(22541))
print(sum_digits(92130))
print(sum_digits(12634))
print(sum_digits(704))
print(sum_digits(3755))
print("# 1๋ถํฐ n ๊น์ง ์ฐ์ํ ์ซ์์ ํฉ์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ")
def sum_number(n):
return n*(n+1) // 2
print(sum_number(10))
print("# 1๋ถํฐ n ๊น์ง ์ฐ์ํ ์ซ์ ์ ๊ณฑ์ ํฉ์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ")
def _sum_number(n) :
return n*(n+1)*(2*n+1) // 6
print(_sum_number(3))
๋ฆฌ์คํธ ๋ค์ง๊ธฐ
print("# ํ๋ผ๋ฏธํฐ some_list๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง๋ ํจ์")
def flip(some_list):
if len(some_list) < 2:
return some_list
return flip(some_list[1:]) + some_list[:1]
# ํ
์คํธ
some_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
some_list = flip(some_list)
print(some_list)
Last updated
Was this helpful?