フィボナッチ関数続き

二重再帰を末尾再帰に変更しろと友達から教えてもらった。

def fib(cnt, result, num):
  if 1 > n:
    return result
  fib(cnt - 1, result + num, result)
>>>fib(10)
89
>>>fib(20)
10946

おーめっちゃ速くなった。


ってかPythonチュートリアルにも載ってるじゃないですか!
しかもPythonっぽい書き方が。

def fib(cnt):
    result, num = 1, 1
    for i in range(cnt):
        result, num = num, result + num
    return result

こっちの方が速いです。