สมมติว่าเรามีตัวเลขบอกว่า n เราต้องตรวจสอบว่า n มีอยู่ในลำดับฟีโบนักชีหรือไม่ ดังที่เราทราบในลำดับฟีโบนักชี f(i) =f(i-1) + f(i-2) สำหรับแต่ละ i ตั้งแต่ 2 ถึง n และ f(0) =0, f(1) =1
ดังนั้น หากอินพุตมีค่าเท่ากับ n =13 ผลลัพธ์จะเป็น True เนื่องจากบางพจน์ในลำดับฟีโบนักชีคือ:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ดังนั้น 34 จึงมีอยู่ .
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- phi :=0.5 + 0.5 * สแควร์รูทของ (5.0)
- a :=phi * n
- คืนค่า จริง เมื่อ n เท่ากับ 0 หรือ a เป็นจำนวนเต็ม
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from math import sqrt def solve(n): phi = 0.5 + 0.5 * 5.0**0.5 a = phi * n return n == 0 or abs(round(a) - a) < 1.0 / n n = 13 print(solve(n))
อินพุต
13
ผลลัพธ์
True