给定一个数字和一个比率,如何创建一个指数增长的数字列表,其和等于起始数字?在
>>> r = (1 + 5 ** 0.5) / 2
>>> l = makeSeq(42, r)
>>> l
[2.5725461188664465, 4.162467057952537, 6.735013176818984,
10.897480234771521, 17.63249341159051]
>>> sum(l)
42.0
>>> l[-1]/l[-2]
1.6180339887498953
>>> r
1.618033988749895
Tags:
选择任何你想要的斐波纳契数列。把它们加起来,用你的目标数除以和得到一个比例因子。将所选序列中的每个数字乘以比例因子,就得到了一个新的序列,该序列和目标序列的总和相同,并且相邻项的比率与原始的Fibonacci数序列相同。在
要生成问题中的示例,请注意1+2+3+5+8=19,2.28/19=0.12。在
斐波纳契序列如下:0,1,1,2,3,5,8,13,21,34。。。等等,正如你可能已经在你的问题的评论中看到的那样,斐波那契序列本身并不“缩放”(也就是说,
fib_seq * 0.12 = 0, 0.12, 0.12, 0.24, 0.36, 0.60, 0.96 ... etc.
不再是斐波那契序列),所以你实际上只能按照上面给出的值的顺序来做一个斐波那契数列。如果您想根据某些标准使Fibonacci序列具有动态可伸缩性,请进一步说明它的用途以及您遇到的问题,以便社区能够为您提供更多帮助。在现在,让我们从基础知识开始。如果您在实现一个函数来打印Fibonacci序列时遇到了困难,请参考@andrea ambu在这里给出的答案:https://stackoverflow.com/a/499245/5209610。他提供了一个非常全面的解释,不仅是如何在任何给定语言的函数中实现Fibonacci序列,而且还进一步探讨了如何有效地实现这一点!在
我假设您正在尝试如何编写一个函数,该函数将使用用户提供的整数并打印出总和为该值的Fibonacci系列(即,
print_fib_series(33)
将打印0 + 1 + 1 + 2 + 3 + 5 + 8 + 13
)。假设用户提供的值是Fibonacci系列值的总和,则只需递增地将Fibonacci系列中的下一个值相加,直到达到用户提供的值为止(并跟踪到目前为止您已将哪些值相加),就可以很容易地实现这一点。下面是我刚刚描述的简单实现:因此,考虑到2.4的十进制值,您可以对Fibonacci级数应用0.12的线性比例因子,得到您在问题中指出的结果。我希望这对你有帮助!在
指数增长的离散序列称为几何级数。这个和叫做几何级数。公式here可以很容易地求解,以产生您需要的序列:
同样值得注意的是,这个问题和Fibonacci的原始问题都可以用二进制搜索/对分方法来解决。在
相关问题 更多 >
编程相关推荐