问题标签 [infinite-recursion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 这个递归模板函数可以编译吗?
我有这段代码应该实现埃拉托色尼筛。从所有数字 >= 2 开始。获取第一个数字 (2),打印它并删除它的所有倍数。获取第二个数字 (3),打印并删除它的所有倍数。等等。
递归仅限于显示小于 100 的素数。或者是吗?
我认为这段代码是完全有效的,但永远不会完成编译。
这样做的原因是auto sieve
next 中的论点而if (prime < limit)
不是constexpr
. 在编译器的每个实例中next
,都必须验证对模板参数的递归调用next
并推断出模板参数,并且递归永远不会结束。
我是对的还是只是不耐烦?它现在编译了2个多小时,到目前为止消耗了4GB的内存。
如果是这样,有没有办法使递归终止?某种形式的类型擦除?最终目标是建立所有素数的无限范围/视图。
更新:使用无限范围是有意的,没有它就不要提出解决方案。最终目标是无限范围的质数,当您迭代该范围时会懒惰地评估。