재귀 시험지 분배 비유
재귀에 대한 비유가 생각나서 써 봄. 학교 다녀 본 사람은 시험시간에 시험지를 나누는 두가지 방법이 있는 것을 안다.1. 선생님이 돌아다니면서, 모든 사람에게 하나씩 시험지를 나누어 준다.2. 매 줄마다 학생수만큼 시험지를 맨 앞사람에게만 주고, 시험지 더미을 받은 사람은 자신이 하나를 갖고, 시험지 더미를 뒷사람에게 준다. 즉, 대략 def 시험지나눠주기(시험지더미, 학생들):# 학생들 = [ 학생1, 학생2, 학생3, ..., 학생n ]for 학생 in 학생들:시험지하나주기(학생)시험지더미-=1 def 시험지나눠주기뒤로넘기기(시험지더미, 학생들):# 학생들 = [ 학생1, 학생2, 학생3, ... 학생n ]학생들[0].시험지하나갖기() # 학생들[0] 은 시험지를 받은 학생들 리스트의 첫번째 학생시험..
nCr 캐시된 재귀함수로 구하기
Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)] on win32Type "copyright", "credits" or "license()" for more information.>>> def nCr(n, r):if r in (n, 0);SyntaxError: invalid syntax>>> @functools.lur_cache(maxsize=200, typed=False)def nCr(n, r):if r in (n, 0):return 1return nCr(n-1, r-1) + nCr(n-1, r) Traceback (most recent call last): File "", line 1, in @fu..