Q中的Collat​​z序列

时间:2017-01-19 10:51:25

标签: kdb

我尝试在Q中实现Collat​​z序列(作为初学者的练习)。很容易获得第一个值:

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

什么都行不通......

1 个答案:

答案 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