给出一个数字计算其fibonacci-ish系列

时间:2016-04-02 18:48:46

标签: algorithm

让我们假设你有一个号码。您必须计算其fibonacci-ish序列。例如,我们都知道斐波那契序列 0 1 1 2 3 5 8 13 21 ......

如果要给你21号,你必须打印序列0 1 1 2 3 5 8 13 21

现在考虑另一个数字26.它不在上面的序列中。但是有一个序列。那是0 2 2 4 6 10 16 26

考虑另一个。 7.序列为1 3 4 7

注意每个数字可以有多个序列。例如,你可以说26个按顺序1 25 26掉落。

你必须最大化序列。通过最大化我的意思是你必须找到序列中的最大数量。例如,1 25 26只有3个数字,而0 2 2 4 6 10 16 26有8个数字。所以8个数字的序列是可取的。

因此,问题陈述是Given a number compute its series of numbers where the sequence has maximum amount of numbers

我试过的方法:

检查每个值的编号。例如,对于26,序列可以是

26 25 1
26 24 2
26 23 3
26 22 4
26 21 5
26 20 6
26 19 7
等等。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

如果从1,1以外的一对开始,那么连续项之间的比率仍约为(1 + sqrt(5))/ 2。要找到以n结尾的最长序列,请选择下一个最大数字为n *(sqrt(5) - 1)/ 2的最低或最高数字,然后向后运行斐波那契序列。

例如从21开始,我们有21 *(sqrt(5)-1)/ 2 = 12.98,所以 使用13我们倒退得到8 = 21 - 13,5 = 13 - 8,3,2,1,1

26,我们得到下一个数字为16,给出相反的顺序 26,16,10,6,4,2,2,0