这是Dyalog APL中黄金分割率的代码:
1+∘÷⍣=1
我不明白。 “ 1加撰写Rec重复等于1”没有任何意义。
答案 0 :(得分:4)
⍣
的操作数是+∘÷
(左)和=
(右)。其参数均为1
。
⍣
为“直到”,它重复左操作数,直到右操作数(最后两个结果调用)给出1
。因此,这里⍣=
是“重复直到相等”-找到固定点。
⍣
用与它的左参数相同的左参数调用它的左操作数(因此总是1
),但是用新的结果循环右操作数。
因此,+∘÷
被动态地调用,与dfn {⍺ + ÷⍵}
相同。 ⍺
始终为1,因为这是⍣
的左引数。
总而言之,此代码执行1 + ÷last
直到最后一个结果与该结果相等为止。 Try it online!
Dyalog APL ]box on -trains=tree
:
⍣
┌┴┐
∘ =
┌┴┐
+ ÷
答案 1 :(得分:3)
倒数一元应用于右操作数,结果加到左操作数。 10+∘÷4 → 10.25
和1+∘÷1 → 2
。
当我们重复二元函数时,右边的操作数被“更新”,但是左边的操作数保持不变。 1+∘÷⍣2⊢1 → 1+∘÷2 → 1.5
一次重复一次,只要(当前结果) f (先前结果)为假。这样,⍣=
会重复进行直到收敛为止,就像“∞次”一样。
答案 2 :(得分:1)
现在我明白了,谢谢你!总结! x +∘÷y是一个复合函数。首先,您计算1 / y,然后将其与加法组成,然后将x相加。现在,这里是我们喜欢酸糖的人(他一直皱着眉头)重复出现的家伙!测试:1(+⍣10)1.他从1开始,加1,然后再次对结果进行重复,直到执行十次为止。如果10变成=,则当上一个结果等于当前结果时,他将停止!在这种情况下,x(f⍣u)y的x,f,u和y分别为1,+∘÷,=和1。我认为这种“倒数+ 1”方法是经典方法。>