相关疑难解决方法(0)

Python优化尾递归吗?

我有以下代码失败,出现以下错误:

RuntimeError:超出最大递归深度

我试图重写它以允许尾递归优化(TCO).我相信如果发生TCO,这段代码应该是成功的.

def trisum(n, csum):
    if n == 0:
        return csum
    else:
        return trisum(n - 1, csum + n)

print(trisum(1000, 0))
Run Code Online (Sandbox Code Playgroud)

我是否应该断定Python不执行任何类型的TCO,或者我只是需要以不同的方式定义它?

python stack-overflow recursion stack tail-recursion

182
推荐指数
5
解决办法
6万
查看次数

是否存在无限生成器的表达式?

是否存在可以产生无限元素的直接生成器表达式?

这是一个纯粹的理论问题.这里不需要"实用"的答案:)


例如,很容易制作一个有限的发电机:

my_gen = (0 for i in xrange(42))
Run Code Online (Sandbox Code Playgroud)

但是,要创建一个无限的,我需要使用伪造的函数"污染"我的命名空间:

def _my_gen():
    while True:
        yield 0
my_gen = _my_gen()
Run Code Online (Sandbox Code Playgroud)

在单独的文件中执行操作并在import以后执行操作不计算在内.


我也知道这就是itertools.repeat这个.我很好奇是否有一个没有它的单线解决方案.

python iterator generator infinite-loop

104
推荐指数
6
解决办法
5万
查看次数

Python中无限循环可用吗?

是否有可能在for循环中获得无限循环?

我的猜测是Python中可能存在无限循环.我想知道这个以供将来参考.

python loops for-loop infinite infinite-loop

7
推荐指数
4
解决办法
2万
查看次数