我有以下递归关系 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)
我可能完全偏离了,但任何提示都将不胜感激。它应该返回元素列表 [H(1), H(2),...H(N)]
请注意,构造函数中的 n=0, H=[]
是必需的。这是我的教科书“数值分析”中的练习
最佳答案
如果你想创建一个递归函数:
def H(n):
if n == 1:
return 1
else:
return 2*H(n-1)+1
如果你希望输出是一个列表,你必须做类似的事情:
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
小心,因为递归函数很耗时,你应该计算 H(n) 并用一行代码让它工作
关于python - 通过递归生成元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957419/