Số Fibonacci thứ có thể được tính trong thời gian tuyến tính bằng cách sử dụng lần lặp lại sau:
def fib(n):
i, j = 1, 1
for k in {1...n-1}:
i, j = j, i+j
return i
Các th số Fibonacci cũng có thể được tính như [ φ n / √. Tuy nhiên, điều này có vấn đề với các vấn đề làm tròn chonthậm chí tương đối nhỏ. Có lẽ cónhiều cách để giải quyết vấn đề nàynhưng tôi không muốn làm điều đó.
Có một thuật toán hiệu quả (logarit trong giá trị hoặc tốt hơn) để tính toán số Fibonacci thứ n không dựa vào số học dấu phẩy động? Giả sử rằng các phép toán số nguyên ( + , - , × , / ) có thể được thực hiện trong thời gian không đổi.