警察的线
在此线程中,您的任务是制作一个基于递归的程序/函数以生成任何整数序列。强盗将尝试在强盗的线程中找到较短的非递归解决方案。
挑战简介
在许多语言中,递归函数可以大大简化编程任务。但是,适当递归的语法开销可能会限制其在代码高尔夫球中的可用性。
的警察将创建一个程序或函数采取一个整数n
,这将产生所述第一n
整数系列的条目,只使用递归1。他们还应确保以较短的非递归方式生成序列,以将其输入标记为安全。
的 劫匪将试图找到一个更短的程序或功能相同的语言,产生相同的整数系列,不使用递归2。
如果警察在十天之内(240小时)未破解提交的文件,则警察将通过公开自己的解决方案来证明实际上有可能采用较短的非递归方法。然后,他们可以将提交的内容标记为安全。
警察挑战赛的获胜者将是最短的(根据code-golf)基于递归的标记为安全的提交。
强盗挑战的赢家将是破解最多解决方案的强盗。
1:只需要递归语法即可;您无需担心例如尾部呼叫优化。
2:同样,语法不是递归的;因此,由于尾部调用优化,您无法发布递归解决方案并将其编译为循环。
提交要求
每个提交都将使用一个整数n
(从零开始或从一个开始)。然后,提交的内容将输出或返回第一个n
整数选择系列项。(请注意,此整数系列不能依赖n
)。输入和输出方法在递归和非递归方法之间可能有所不同。整数序列可以是长度至少为5的任何确定性序列。应该对序列进行适当的说明。
您提交的内容不必花大价钱就能工作n
,但至少应该能工作n=5
。非递归方法必须至少能够n
与递归方法相同,或者达到n=2^15-1
,以较小者为准。
递归
对于这一挑战的缘故,递归定义为创建使用所期望的序列的功能(或类似函数的构建体),其调用自身(或调用的功能的序列结束调用本身;这包括如Y组合的构建体)。递归深度应达到无穷n
大。非递归的方法是什么,是不是递归的。
n
如果理论上正确,我是否可以说代码可以任意工作,但由于时间或内存限制而无法运行?
n=5
必须进行计算
xfor
可以通过某种导入方式使用?),因此该语言可能无法竞争。
for
来说,递归背后是for
递归的还是循环的?