我必须用python编写一个递归函数,它概括了以下函数:
f(n) result
0 1
1 1
2 2
3 5
4 13
5 34
6 89
7 233
我做了这样的东西:
def F(n):
if n <= 0:
return 1
else:
return 2*( F(n-1) + F(n-2) ) - F(n-3)
它几乎适用于该范围的所有值,但与前3个结果不匹配。如何根据输出确定递归函数?
我有以下资料:
提示:f(n)是根据f(n-1)和f(n-2)递归定义的。你必须找出使这一切发生的数学表达式。提示:此表达式中的函数系数不大于5,也不小于1,并且任何此类系数都是整数。”
2条答案
按热度按时间v8wbuo2f1#
你需要3个基本情况
或
ukxgm1gy2#
一个很好的整数序列源是oeis。您的序列号为a001519。从中我们了解到:
a(n)=3a(n-1)-a(n-2)表示n>=2,其中a(0)=a(1)=1。
这就是在epsi95中找到的解决方案。
该序列的另一个优点是:
这是斐波那契序列a000045的二等分。a(n)=f(2n-1),其中f(n)=a000045(n)和f(-1)=1