我尝试在Q中实现Collatz序列(作为初学者的练习)。很容易获得第一个值:
collatz:{`long$$[0j~x mod 2;x%2;1+3*x]}
问题是上面的代码显然不包含任何控制结构。 我知道我可以通过
计算另一个元素2 collatz/ x
... 3,4等等..但是我试图获得整个列表(序列)是徒劳的......我试过了:
til 5 collatz/ x
和
1 2 3 collatz/ x
什么都行不通......
答案 0 :(得分:1)
如果我正确理解您在此处尝试做什么,以下内容适用于您的功能:
collatz\[5;x]
这是"迭代"用于反斜杠的用例,在这种情况下对输入的任何内容执行五次迭代" x"是
http://code.kx.com/q/ref/adverbs/#converge-iterate
q)collatz\[5;1]
1 4 2 1 4 2