You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APL递归时如何用Quad输出信息?解决形状错误问题

APL递归中输出信息的问题解决

你的递归函数出现形状错误的核心原因是⎕←的特性:它会返回自身输出的内容。原代码里(⍺+1)∇(⍵+1),⎕←⍺,⍵会把⍵+1和⎕←输出的⍺,⍵向量拼接,导致下一次递归的⍵变成多元素向量,后续prime函数处理向量时形状不匹配,引发错误。

解决方案:分离输出与递归参数传递

把输出操作和递归参数传递彻底分开,不让输出结果干扰递归参数,有两种常用写法:

1. 多行:If结构(可读性更强)

{
    ⍺←6
    :If prime ⍵
        ⎕←⍺,⍵  ⍝ 输出序号与对应质数
        (⍺+1)∇(⍵+1)
    :Else
        ⍺∇(⍵+1)
    :EndIf
}12

2. 单行语句分隔符⋄写法

{⍺←6⋄prime ⍵ : (⎕←⍺,⍵)⋄(⍺+1)∇(⍵+1) ⋄ ⍺∇(⍵+1)}12

两种写法都是先执行输出操作,再传递正确的标量参数⍵+1给下一次递归,彻底避免形状错误。

额外优化:质数判断函数效率提升

你的prime函数可以优化为检查到√⍵而非⍵÷2,大幅减少计算量:

prime←{0=+/0=⍵|⍨1↓⍳⌊√⍵}

内容的提问来源于stack exchange,提问作者David Hoelzer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:33:22