写一个数字作为斐波那契总和
让我们将斐波那契数列定义为 F(1) = 1 F(2) = 2 F(n) = F(n - 2) + F(n - 1) 因此,我们有无限的序列1,2,3,5,8,13,...众所周知,任何正整数都可以写成某些斐波纳契数的总和。唯一的警告是,这种求和可能不是唯一的。总有至少一种将数字写成斐波纳契数之和的方法,但可能还有更多的方法。 您的挑战是编写一个完整的程序,该程序使用stdin接受一个介于1到1百万之间的正整数,然后使用stdout输出所有可能的斐波纳契数之和,这些总和等于输入。总而言之,斐波那契数不能重复,并且包括该数1。在任何求和中,如果1存在,则必须仅存在一次,因为在我对上述序列的定义中,1仅出现一次。仅包含项的求和是有效的,因此,如果输入数字本身是斐波那契数,则该数字本身是有效的求和并且必须打印。如果有多个总和,则在任意两个总和之间必须有一个空白行才能轻松区分它们。 这是一些样品。 ./myfib 1 1 这样的总和只有一个,并且只有一个术语,所以这就是所有要打印的内容。 ./myfib 2 2 请注意,这1+1是无效的总和,因为会1重复。 ./myfib 3 1+2 3 两个总和,并且两者之间都打印有空白行。 ./myfib 10 2+8 2+3+5 ./myfib 100 3+8+89 1+2+8+89 3+8+34+55 1+2+3+5+89 1+2+8+34+55 3+8+13+21+55 1+2+3+5+34+55 1+2+8+13+21+55 1+2+3+5+13+21+55 真正的代码高尔夫。以任何语言中最短的代码为准。请发布您的代码,并附上一些测试用例(我上面给出的测试用例除外)。如果是平局,我至少要等待两周甚至更长的时间才能选择最高票数。因此,社区请随时支持您喜欢的任何解决方案。代码的巧妙/美观远不如谁先发布。 编码愉快!