python - 通过递归生成元素列表

标签 python python-3.x recursion recurrence

我有以下递归关系 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/

相关文章:

java - 递归java中的堆栈溢出异常

python - 如何在 Linux 中截取屏幕截图(高 fps)(编程)

python - 如何在 Ipython 中显示与内联的 matplotlib 图交错的打印语句?

python - 锁定 dask.multiprocessing.get 并将元数据添加到 HDF

python-3.x - 带有上下文管理器 "cannot schedule new futures after shutdown"的 ThreadPoolExecutor

java - 无法理解递归字符串

python - 如何在 Elasticsearch 中启用滚动功能

python-3.x - 向 ndarray 添加维度并 reshape

python-3.x - AWS Textract 无法识别 PDF 文档第二页的表格

c++ - 为什么我的递归函数中的循环是无限的?