1

私は、フィボナッチが作成する辞書から読み取ることによって本質的にフィボナッチを実行するプログラムを作成しました (開始する {0:0, 1:1} が与えられます)。明らかに、辞書にない場合は、作成されるまで作成し、後で呼び出すため、同じシーケンスを何度も繰り返す必要はありません。私が苦労しているのは、Counter オブジェクトを使用して、アルゴリズムによって実行された命令を追跡することです (したがって、最初の n が増加するにつれて、呼び出しの数のグラフを後でプロットできます)。以前にクラスカウンターやメモ化を使用したことがないので、最後にここで少し迷っています。

    dic = {0:0, 1:1}

    def main():
        n = int(input("Number to Fibonacci?"))
        fib(n)
        print(dic[n])
        Counter()
        memoization(n, Counter, dic)

    def fib(n):
        if n in dic:
            return dic[n]
        else:
            if n < 2:
                dic[n] = n
            else:
                dic[n] = fib(n-2) + fib(n-1)
                return dic[n]

    class Counter():
        def __init__(self):
            self._number = 0
        def increment(self):
            self._number += 1
        def __str__(self):
            return str(self._number)
        def print():
            print(str(self._number))

    def memoization(n, Counter, dic):
        if n in dic:
            return dic[n]
        else:
            c.increment()

     main()

これは私が持っているものですが、正直なところ、ここからどこへ行くべきかわかりません。どんな助けも大歓迎です!

4

1 に答える 1