APL中的重复函数应用

Repeated function application in APL

给定整数 pqn 我想生成一个向量长度为 n,元素为

(⌊p ÷ q) (⌊(⌊p ÷ q) ÷ q) ...

换句话说,我想构造一个向量,其中 i:th 元素被 {⌊⍵ ÷ q} 应用 ip。我怎样才能在 APL 中做到这一点?

这个简短的解决方案使用扫描 \ 适用于所有甚至支持基本 dfns(内联 lambda)的 APL:

1↓{⌊⍵÷q}\(1+n)⍴p

Try it online!

注意它的低效率;它会为每个学期从头开始重新计算。

一个更复杂的解决方案通过使用/迭代来避免重新计算:

r←,p
{r,←⌊(¯1↑r)÷q}/(1+n)⍴1
1↓r

Try it online!