여니의 Side Project/제주코딩베이스캠프 서포터즈 2기

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 재귀함수_보강예제

여니's 2021. 8. 6. 11:37

# 피보나치 수열

a=0 b=1 def fibo(num): if num==1 or num==0: return 1 else: return fibo(num-1)+fibo(num-2) print(fibo(5))

fibo(5) = fibo(4) = fibo(3) = 5 + 3 = 8
fibo(4) = fibo(3) + fibo(2) = 3 + 2 = 5
fibo(3) = fibo(2) + fibo(1) = 2 + 1 = 3
fibo(2) = fibo(1) + fibo(0) = 2


# 팩토리얼

def factorial(num): if num==1: return 1 else: return num*factorial(num-1) print(factorial(5))

# for문 이용 더하기 -> 재귀함수로 구현

s=0 for i in [100,200,300,400]: s+=i print(s)
s = 0 array = [100, 200, 300, 400] def f(array): global s if len(array) == 0: return 0 else: s += array[0] del array[0] return f(array) f(array) print(s)

> 지저분한 나의 코드 ..

l = [100, 200, 300, 400] def s(l): if len(l)==1: return l[0] else: return l[0]+s([1:])

> 강사님의 깔끔한 코드 ,
***** 슬라이싱 사용하자... !!! *****


# 제곱근 구현하기

(방법1) for문

print(2**6) result=1 for i in range(6): result*=2 print(result)

(방법2) 재귀함수

result = 1 def f(n, cnt): global result if cnt == 0: return 1 else: cnt -= 1 return 2 * f(n, cnt) print(f(2, 6))