通过递归生成元素列表

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=[]构造函数中的是必须的。这是我的教科书“数值分析”中的一项练习

Cyr*_*Pin 6

如果要创建递归函数,请执行以下操作:

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)并使它与一行代码一起工作

  • list是内置函数。切勿使用内置函数,模块名称等作为变量名称 (4认同)