【发布时间】:2021-08-08 16:47:08
【问题描述】:
我在学校的某项任务上遇到了问题。在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))
但是,当调用时,达到最大递归数并给出错误。如果我只是太愚蠢并且在这里遗漏了一些东西,但我班上没有人能够解决这个问题而且我的老师今天很忙,所以我希望我能在这里找到一些帮助。
【问题讨论】:
-
首先,您需要分别定义 n=0, 1, 2 的返回值(否则该函数将调用无限小的负值)。此外,您在定义
x的代码中有一个错误。将原方程改写为:M(n) = M(n-3) - M(n-2) + 2*M(n-1)。这应该更直接地变成一个程序。 -
感谢您的帮助,我现在明白了!
标签: python function dynamic task