此APL黄金分割率代码如何工作?

时间:2018-09-01 17:28:16

标签: apl

这是Dyalog APL中黄金分割率的代码:

1+∘÷⍣=1

我不明白。 “ 1加撰写Rec重复等于1”没有任何意义。

3 个答案:

答案 0 :(得分:4)

的操作数是+∘÷(左)和=(右)。其参数均为1

带有右操作数功能的

为“直到”,它重复左操作数,直到右操作数(最后两个结果调用)给出1。因此,这里⍣=是“重复直到相等”-找到固定点。

用与它的左参数相同的左参数调用它的左操作数(因此总是1),但是用新的结果循环右操作数。
因此,+∘÷被动态地调用,与dfn {⍺ + ÷⍵}相同。 始终为1,因为这是的左引数。

总而言之,此代码执行1 + ÷last直到最后一个结果与该结果相等为止。 Try it online!

Dyalog APL ]box on -trains=tree

  ⍣ 
 ┌┴┐
 ∘ =
┌┴┐ 
+ ÷ 

答案 1 :(得分:3)

+∘÷

倒数一元应用于右操作数,结果加到左操作数。 10+∘÷4 → 10.251+∘÷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”方法是经典方法。