sn3*_*d3r 3 python recursion recurrence python-3.x
我有以下递归关系H(n)= 2 * H(n-1)+ 1,H(1)=1。如果我要在python中创建递归函数,它将如何?我尝试了以下操作,但似乎不起作用
def rec_func(N, n=0, H=[])
if n == 1:
return [1] + H
else:
return rec_fun(N-1, n+1, H)
Run Code Online (Sandbox Code Playgroud)
我可能会完全不高兴,但是任何提示将不胜感激。应该返回元素列表[H(1), H(2),...H(N)]
请注意, n=0, H=[]构造函数中的是必须的。这是我的教科书“数值分析”中的一项练习
如果要创建递归函数,请执行以下操作:
def H(n):
if n == 1:
return 1
else:
return 2*H(n-1)+1
Run Code Online (Sandbox Code Playgroud)
如果要将输出作为列表,则必须执行以下操作:
def H_with_list(n, list_final):
if n == 1:
list_final.append(1)
return list_final
else:
list_temp = H_with_list(n-1, list_final)
list_final.append(2*list_temp[-1]+1)
return list_final
Run Code Online (Sandbox Code Playgroud)
请注意,因为递归函数很耗时,因此您应该计算H(n)并使它与一行代码一起工作