题型

循环框图的输出值

给一张带循环的程序框图和一个输入,问输出多少;把循环体读成递推、把判断框读成退出条件,再决定是手推还是解通项。

题型说明

  • 常见问法:「若某程序框图如图所示,当输入 nn 时,输出的结果是 ____」,或反过来给输出问输入。
  • 主线:
    1. 先把框图翻译成三行字。初值(S=0, i=1S=0,\ i=1)、循环体(S=2S+iS=2S+i,i=i+1i=i+1)、退出条件(S≥nS\ge n 时退出)。翻译完就可以不看图了。
    2. 确认判断框在循环体之前还是之后。在后面 = 做完再判,循环体至少跑一次;在前面 = 先判再做,有可能一次不跑。这一步定的是「差一步」还是「差两步」。
    3. 认清输出的是哪个变量、在哪一刻取的值。退出时计数器往往已经多加了一次,输出值与循环轮数常常相差 11。
    4. 手推还是求通项,看轮数:轮数少(一般 ≤6\le 6)直接列表;轮数多或输入是字母,就把循环体当递推解出 SkS_k 的通项,再解不等式。
  • 一条现成结论:形如 Sk=aSk−1+f(k)S_k=aS_{k-1}+f(k) 的循环体就是非齐次线性递推,标准做法是配一个待定的 λk+μ\lambda k+\mu 让 Sk+λk+μS_k+\lambda k+\mu 成等比;或者作差把它降成 dk+1=adk+cd_{k+1}=a d_k+c 这种更简单的形式再累加。

常见陷阱

  • 把输出的计数器值当成循环轮数,答案差 11。
  • 退出条件是 S≥nS\ge n 还是 S>nS>n 看错;边界那一轮跑不跑,直接决定答案。
  • 处理框里的 S=2S+iS=2S+i 当成方程去解。它是赋值,右边用的是旧值。
  • 循环体里两条赋值语句的先后读反:先更新 ii 再算 SS,与先算 SS 再更新 ii,得到的是两条不同的递推。
  • 轮数明明只有五六轮,却去硬解通项;或者反过来,输入是字母还在一轮一轮地试。

学它之前先会

共 1 条前置、最深 1 层。

共 6 道题考到本条。