Il existe des dizaines de manières de calculer F(n) pour un arbitraire de n, dont beaucoup ont un grand moment de l'exécution et l'utilisation de la mémoire.
Cependant, supposons que je voulais poser la question opposée:
Compte tenu de F(n) pour n > 2, ce qui est n?
(N > 2 restriction est là puisque F(1) = F(2) = 1 et il n'y a pas d'équivoque l'inverse).
Quel serait le moyen le plus efficace de résoudre ce problème? Il est facile de le faire en temps linéaire par l'énumération des nombres de Fibonacci et arrêter quand vous frappez le numéro de la cible, mais est-il un moyen de le faire plus vite que ça?
EDIT: actuellement, la meilleure solution posté ici s'exécute en O(log n) en temps à l'aide de O(log n) de la mémoire, en supposant que les opérations mathématiques exécuter en O(1) et qu'une machine word peut contenir n'importe quel nombre en O(1) de l'espace. Je suis curieux de savoir si il est possible de déposer la quantité de mémoire requise, puisque vous pouvez calculer les nombres de Fibonacci à l'aide de O(1) de l'espace.
Merci, et j'espère que vous pensez que c'est aussi cool que je fais. :-)