我需要编写一个函数来满足这个输入 - >输出列表:
0 -> 0
1 -> 1
3 -> 2
4 -> 3
5 -> 5
7 -> 13
9 -> 34
f(x)= ??
答案 0 :(得分:2)
嗯,这非常容易......如果您不关心过度拟合,那么您可以这样做:
switch(input)
case 0: report 0
case 1: report 1
case 3: report 2
...
default: report whatever
如果您想要一个好的解决方案,您可能需要更多的问题约束。您还可以考虑绘制函数图形以查看是否存在任何明显的模式,或者可能显示所涉及的位。知道输入和输出是整数值还是实数值(该函数应该是连续的还是离散的?)也是有用的。没有这些信息,它有点难以帮助。
修改的
显示缺少的数字有助于:
0 - > 0
1 - > 1
2 - > 1
3 - > 2
4 - > 3
5 - > 5
6 - > 8
7 - > 13个
8 - > 21
9 - > 34个
(它是Fibonnaci数:f(x)= f(x-1)+ f(x-2),其中f(0)= 0且f(1)= 1)。
PS 的
这是dynamic programming或memoization特别有用的函数。
答案 1 :(得分:2)
round(exp(0.4807*input - 0.799938))
答案 2 :(得分:1)
我不知道这是否是家庭作业,但这是一个非常着名的序列。 (相当大的)提示是f(n)取决于f(n-1)和f(n-2)。如果你不关心被告知答案,click here。实现序列非常简单地以递归方式完成,但是如果你遇到问题就编辑你的帖子并指定你被困在哪个部分