#재귀함수를 이용한 피보나치
def fibo1(n):
    if n < 3:
        return 1
    return fibo1(n-1) + fibo1(n-2)

#for문을 이용한 피보나치
def fibo2(n):
    if n < 3 :
        return 1
    else:
        a, b = 1, 1
        for i in range(1, n):
            a,b = b, a+b
    return a

#메모이제이션을 이용한 피보나치
def fibo3(n):
    fibList = [1, 1]
    if n < 3:
        return 1
    else:
        for i in range(2,n):
            fibList.append(fibList[i-1] + fibList[i-2])
    return fibList

a = int(input())

print("#재귀함수 이용")
print("n = {0} \nvalue = {1}".format(a,fibo1(a)))
print()
print("#for문 이용")
print("n = {0} \nvalue = {1}".format(a,fibo2(a)))
print()
print("#메모이제이션 이용(결과값을 리스트에 저장해 반환)")
print("n = {0} \nvalue = {1}".format(a,fibo3(a)))

+ Recent posts