我对学校里的一项任务有问题。以下递归函数将在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))
希望这能解决你的问题