KEEP GOING

[python] 음수 피보나치 수열 (구현) 본문

code review/implementation

[python] 음수 피보나치 수열 (구현)

jmHan 2021. 12. 3. 19:42
반응형

f(0) = 1, f(1) = 1

f(n) = f(n-1)+f(n-2)

위와 같은 조건을 만족하는 피보나치 수열이 있다고 가정하자.

위 공식을 통해 음수 또한 피보나치 수열을 만들 수 있다.

예를들어, f(1) = f(0) + f(-1)  f(-1) = f(1) - f(0) = 1을 구할 수 있다. 

입력된 숫자 번호에 해당하는 피보나치 수열을 문자열로 리턴하는 음수 피보나치 수열을 구현하라.

 

# 메모이제이션 사용 
#타겟 원소 
lst = [-5,-1,-10,-3,5,10,2]
box = [0]*100
box[1] = 1
minusBox = [0]*100
minusBox[-1] = 1
def fibo(n):
    for i in range(2, n+1):
        if box[i] != 0:
            continue
        else:
            box[i] = box[i-1] + box[i-2]
def minFibo(n):
    for i in range(-2,n-1,-1):
        if minusBox[i] != 0:
            continue
        else:
            minusBox[i] = minusBox[i+2] - minusBox[i+1]
            
# 타겟 원소에 해당하는 피보나치 수열 확인 
for data in lst:
    if data == 0 or data == 1:
        print(str(box[data]))
    elif data > 1:
        fibo(data)
        print(str(box[data]))
    else:
        minFibo(data)
        print(str(minusBox[data]))

# print(minusBox[-20:])
# print(box[:20])
반응형
Comments