擅长:python、mysql、java
<p>通常,有一些方法可以简化问题:</p>
<ol>
<li>另一种更简单更有效的方法</li>
<li>更具Python风格</li>
</ol>
<p>F(n)*F(n+1)=prod,n的个数不超过一个。我认为你的想法是可以的,你可以产生你的fib列表,同时判断如果f(n)*f(n+1)=prob,也许你的代码可以更简单</p>
<pre><code>prod = 50 # random value for your product
top_limit = int(prod ** 0.5) # you should set a suitable top limit
def fib(top):
n, a, b = 0, 0, 1
while n < top:
a, b = b, a + b
if a * b == prod:
yield [a,b,True]
else:
yield [a,b,False]
n = n + 1
list(fib(top_limit))
</code></pre>
<p>输出为</p>
<pre><code>[[1, 1, False],
[1, 2, False],
[2, 3, False],
[3, 5, False],
[5, 8, False],
[8, 13, False],
[13, 21, False]]
</code></pre>
<p>你看,13*21=273>;>;50,你可以把变量<code>top_limit</code>设置得更小</p>