Python-动态函数-递归错误,理解困难



我对学校里的一项任务有问题。以下递归函数将在python中定义:

M(n+3) = M(n) - M(n+1) + 2*M(n+2)

为了测试以下结果,这些测试用例应该返回,并且函数将在0到9的范围内调用:

M(0) = 0, M(1)=3, M(2)=2

我试过以下几种:

def M(n):
x = n + 3
return M(x) - M(x+1) + 2 * M(x+2)

for i in range(0, 9):
print(M(i))

然而,当调用时,将达到递归的最大数目,并给出错误。我想我是不是太笨了,错过了什么,但班上没有人能解决这个问题,我的老师今天也很忙,所以我希望我能在这里找到一些帮助。

转换此

M(n+3) = M(n) - M(n+1) + 2*M(n+2)

M(n)=M(n-3)-M(n-2)+ 2*M(n-1)
  • 两者含义相同
  • 您还必须定义基本情况

所以这将是您的Python代码

def M(n):
if n==0:
return 0
elif n==1:
return 3
elif n==2:
return 2
else:
return M(n-3) - M(n-2) + 2 * M(n-1)
for i in range(0, 9):
print(M(i))

希望这能解决你的问题

相关内容

最新更新