任意の n に対して F(n) を計算する方法は数十ありますが、その多くは実行時間とメモリの使用量が大きくなります。
ただし、逆の質問をしたいとします。
n > 2 に対して F(n) が与えられた場合、n は何ですか?
(F(1)= F(2)= 1であり、明確な逆がないため、n> 2の制限があります)。
この問題を解決する最も効率的な方法は何でしょうか? フィボナッチ数を列挙し、目標数に達すると停止することで線形時間でこれを行うのは簡単ですが、それよりも速くこれを行う方法はありますか?
EDIT:現在、ここに投稿された最良の解決策は、O(1)で実行され、機械語がO(1)空間に任意の数を保持できると仮定して、O(log n)メモリを使用してO(log n)時間で実行されます. O(1) 空間を使用してフィボナッチ数を計算できるため、メモリ要件を下げることができるかどうか興味があります。