学生学习单

有状态的算法

三个课节:预测、构建、解释。可以在纸上或本地实验室中完成。应用不会索取姓名、账户或学生记录。

16. 阶乘与循环不变量

使用乘法累加器,并解释为什么 0! 等于 1。

打开本课 →

1. 预测与跟踪

运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。

LOAD 4 R1
LOAD 1 R2
LOOP 4
LOAD R2
MUL R1
COPY R0 R2
LOAD R1
SUB 1
COPY R0 R1
RETURN
LOAD R2
PRINT
HALT

加入输入队列: 无

初始化内存: 所有字节初始为零

指令执行前 PC执行后 PC执行前 R0执行后 R0相关状态输出
       
       
       

2. 构建与检查

读取 0 到 6 的 N,输出 N!。使用循环和乘法累加器。

必需的指令类型: INPUT, LOOP, MUL

起始程序

INPUT
COPY R0 R1
COPY R0 R3
LOAD 1 R2
LOOP R3
  #
RETURN
LOAD R2
PRINT
HALT

你的程序与笔记

3. 解释机器

乘积累加器为什么从 1 开始?