मान लीजिए हमारे पास एक संख्या 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, तो 13 मौजूद है।
समाधान दृष्टिकोण
एक संख्या n फिबोनैकी संख्या है यदि और केवल यदि 5*n^2 + 4 या 5*n^2 - 4 एक परफेक्ट स्क्वायर है। यहां गोल्डन अनुपात phi का उपयोग करके एक वैकल्पिक जांच का उपयोग किया गया है।
phi = 0.5 + 0.5 * sqrt(5.0)की गणना करें।a = phi * nकी गणना करें।- True लौटाएं यदि
n == 0याaएक इंटीजर है (यानी|round(a) - a| < 1/n)।
पायथन कार्यान्वयन
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