<p>斐波纳契序列如下:0,1,1,2,3,5,8,13,21,34。。。等等,正如你可能已经在你的问题的评论中看到的那样,斐波那契序列本身并不“缩放”(也就是说,<code>fib_seq * 0.12 = 0, 0.12, 0.12, 0.24, 0.36, 0.60, 0.96 ... etc.</code>不再是斐波那契序列),所以你实际上只能按照上面给出的值的顺序来做一个斐波那契数列。如果您想根据某些标准使Fibonacci序列具有动态可伸缩性,请进一步说明它的用途以及您遇到的问题,以便社区能够为您提供更多帮助。在</p>
<p>现在,让我们从基础知识开始。如果您在实现一个函数来打印Fibonacci序列时遇到了困难,请参考@andrea ambu在这里给出的答案:<a href="https://stackoverflow.com/a/499245/5209610">https://stackoverflow.com/a/499245/5209610</a>。他提供了一个非常全面的解释,不仅是如何在任何给定语言的函数中实现Fibonacci序列,而且还进一步探讨了如何有效地实现这一点!在</p>
<p>我假设您正在尝试如何编写一个函数,该函数将使用用户提供的整数并打印出总和为该值的Fibonacci系列(即,<code>print_fib_series(33)</code>将打印<code>0 + 1 + 1 + 2 + 3 + 5 + 8 + 13</code>)。假设用户提供的值是Fibonacci系列值的总和,则只需递增地将Fibonacci系列中的下一个值相加,直到达到用户提供的值为止(并跟踪到目前为止您已将哪些值相加),就可以很容易地实现这一点。下面是我刚刚描述的简单实现:</p>
<pre><code># Recursive implementation of the Fibonacci sequence from the answer I linked
def fib_seq(ind):
if ind == 0:
return 0;
elif ind == 1:
return 1;
else:
return fib_seq(ind - 1) + fib_seq(ind - 2);
def list_fib_series(fib_sum, scaling_factor):
output_list = [];
current_sum = 0;
for current_val in fib_seq():
current_sum += current_val * scaling_factor;
output_list.append(current_val);
if current_sum == fib_sum:
return output_list;
elif current_sum > fib_sum:
return 0; # Or you could raise an exception...
fib_list = list_fib_series(2.4, 0.12):
print ' + '.join(map(str, fib_list));
</code></pre>
<p>因此,考虑到2.4的十进制值,您可以对Fibonacci级数应用0.12的线性比例因子,得到您在问题中指出的结果。我希望这对你有帮助!在</p>