Bởi vì thuật ngữ thứ n của dòng Fibonacci là chỉ đơn giản là tổng của hai nhiệm kỳ trước đó, một vòng lặp đơn giản có thể thực hiện công việc. So với các thuật toán đệ quy, sự phức tạp của thuật toán lặp đi lặp lại này cũng sẽ giảm đáng kể vì nó là tuyến tính. Do đó, hiệu quả của nó cũng là tốt hơn nhiều, và computeIteratively(30) mất ít hơn 1 millisecond để hoàn thành. Bởi vì bản chất của nó tuyến tính, bạn có thể sử dụng một thuật toán để tính toán các điều khoản vượt quá 30. Ví dụ, computeIteratively(50000) mất chỉ 2 mili giây để trở về một kết quả và, bởi extrapolation, bạn có thể đoán computeIteratively(500000) sẽ mất giữa 20 và 30 mili giây để hoàn thành. Trong khi hiệu suất như vậy là hơn chấp nhận được, nó có thể để đạt được kết quả nhanh hơn với một phiên bản hơi sửa đổi của các thuật toán tương tự, như cho thấy trong bảng liệt kê 1-5. Phiên bản mới này tính hai nhiệm kỳ một lặp đi lặp lại, và tổng số lặp đi lặp lại giảm một nửa. Bởi vì số lượng lặp đi lặp lại trong các thuật toán lặp đi lặp lại bản gốc có thể được lẻ, ban đầu giá trị cho một và b được sửa đổi cho phù hợp: dòng bắt đầu với một = 0 và b = 1 khi n là lẻ, và nó bắt đầu với một = 1 và b = 1 (Fib(2)=1) khi n là số chẵn.
đang được dịch, vui lòng đợi..