Procedural/imperative 编程 - 算法

Procedural/imperative programming - Algorithm

如果 x = 0,1,2,3

,你能帮我理解 r 中的端口吗
y <-- 0
z <-- 1
r <-- z

while y < x {
Multiply z by 2;
Add z to r;
Increase y; }

显然,该算法计算从 0x 的两个幂的总和,并使用 r 作为累加器。终止时,r 保留值 2^(x+1)-1

在每个循环步骤中,z 都乘以 2,因此得到的值为 2,4,8,16...(通常为 2^n)。

r初为1,加上z,则为3,7,15,31(一般为2^(n+1) - 1)

对于 x = 0 将跳过循环,因此 r 保持为 1

对于 x = 1 循环将...嗯...循环一次,所以你得到 3 等等