week02 피보나치 수열

2441 단어
1. 피보나치 수열을 순환으로 출력한다.
2. 피보나치에 대응하는 숫자를 차례로 출력한다.

순환으로 만들다

def rabbit2(n):
    i = 2
    x1 = 0
    x2 = 1
    x3 = 0
    a = [1]
    if n >= 2:
        while i < n + 1:
            x3 = x1 + x2
            x1 = x2
            x2 = x3
            i += 1
            a.append(x3)
        else:
            return a
    else:
        return a

n = 8
d = rabbit2(n)
print(d)


n = 1
d = rabbit2(n)
print(d)

귀속으로 제작하다


첫 번째 버전: 중복 컴퓨팅 버전
def rabbit1(n):
    if n <= 1:
        return n
    else:
        return rabbit1(n - 1) + rabbit1(n - 2)


print('Pls print a number')
print(rabbit1(4))
print(rabbit1(12)

제2판
a = 0
rab = [0]*100


def rabbit2(n):
    global a
    a += 1

    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        b = rabbit2(n - 1)
        rab[n - 1] = b
        c = rab[n - 2]
        return b + c


print(rabbit2(100), '{} : a'.format(a))
print(rabbit2(50),'{} : a'.format(a))

귀속 + 수열로 제작하여 더욱 편리합니다.
 + 
def rabbit1(n) :
    rab = []
    if n <= 1:
        return 1
    else:
        rab.append(1)
        rab.append(1)
        for i in range(2,n):
            rab.append(rab[i - 1] + rab[i - 2])
    return rab

print('Pls print a number')
print(rabbit3(1000))

class로 이 문제를 해결하다
class Rabbit:
    def __init__(self, cap):
        self.rab = [0] * cap
        self.c = 0

    def count(self, n):
        self.c += 1
        if n <= 0:
            return 0
        elif n == 1:
            return 1
        else:
            if self.rab[n - 1] > 0:
                a = self.rab[n - 1]
            else:
                a = self.count(n - 1)
                self.rab[n - 1] = a
            if self.rab[n - 2] > 0:
                b = self.rab[n - 2]
            else:
                b = self.count(n - 2)
                self.rab[n - 2] = b
            return a + b

수정된class
class Rabbit:
    def __init__(self, cap):
        self.rab = [0] * cap
        self.c = 0

    def count(self, n):
        self.c += 1
        if n <= 0:
            return 0
        elif n == 1:
            return 1
        else:
            a = self.count(n - 1)
            self.rab[n - 1] = a
            b = self.rab[n - 2]
            return a + b

좋은 웹페이지 즐겨찾기