【发布时间】:2022-01-12 18:28:44
【问题描述】:
我正在尝试使用递归来解决它,所以首先我将方程写为:
((2*n+1)/(n+1)) * x * P(n,x) - (n/(n+1)) * P(n-1,x)
我写了以下函数:
def P(n,x):
if n == 0:
return 1
elif n == 1:
return x
else:
return ((2*n+1)/(n+1)) * x * P(n-1,x) - (n/(n+1)) * P(n-1,x)
但我收到以下错误:
Traceback (most recent call last):
File "C:\Users\hp\Desktop\practical work 7\main.py", line 80, in <module>
print (P(2,2))
File "C:\Users\hp\Desktop\practical work 7\main.py", line 78, in P
return ((2*n+1)/n+1) * x * P(n,x) - (n/(n+1)) * P (n-1,x)
File "C:\Users\hp\Desktop\practical work 7\main.py", line 78, in P
return ((2*n+1)/n+1) * x * P(n,x) - (n/(n+1)) * P (n-1,x)
File "C:\Users\hp\Desktop\practical work 7\main.py", line 78, in P
return ((2*n+1)/n+1) * x * P(n,x) - (n/(n+1)) * P (n-1,x)
[Previous line repeated 995 more times]
File "C:\Users\hp\Desktop\practical work 7\main.py", line 73, in P
if n == 0:
RecursionError: maximum recursion depth exceeded in comparison
我不想增加允许的递归次数,除非这是解决问题的唯一方法
我认为等式是错误的,因为P(n,x) 将始终调用该函数,并且该函数将再次返回最后一次,并且它会一直这样做,我只是想知道我是否错过了什么或者问题本身是错误的。
【问题讨论】:
-
您必须记住,您的函数将
n作为参数,但在显示的图像中,该函数将n+1作为参数。所以你必须从图像中的每个n中减去1。 -
您的代码和错误堆栈跟踪不匹配。
-
@PresidentJamesK.Polk 哦,是的,对不起,我没有意识到,我编辑了它
-
@ErikMcKelvey,谢谢,这对我有用,我理解我的错误,再次感谢