程序/命令式编程 - 算法

时间:2015-01-22 12:57:38

标签: algorithm procedural-programming

如果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; }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在每个循环步骤中,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 等