如何基于python函数的输出编写递归函数

izkcnapc  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(407)

我必须用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,并且任何此类系数都是整数。”

v8wbuo2f

v8wbuo2f1#

你需要3个基本情况

def F(n):
    if n <= 1:
      return 1
    elif(n == 2): #-------->
        return 2
    else:
      return 2*( F(n-1) + F(n-2) ) - F(n-3)

def F(n):
    if n<= 1:
        return 1
    else:
        return 3*F(n-1) - F(n-2)
ukxgm1gy

ukxgm1gy2#

一个很好的整数序列源是oeis。您的序列号为a001519。从中我们了解到:
a(n)=3a(n-1)-a(n-2)表示n>=2,其中a(0)=a(1)=1。
这就是在epsi95中找到的解决方案。
该序列的另一个优点是:
这是斐波那契序列a000045的二等分。a(n)=f(2
n-1),其中f(n)=a000045(n)和f(-1)=1

相关问题