我们设计了一个具有以下语法的pl:
load variableName, value
inc variableName //increases the value by 1
loop variableName //loops it a certain number of times depending
on variableName's value at the time. Also if
variableName's value is somehow altered later
on in the code, the loop cycle runs the same
amount as variableName's default value.
end //we put this to as a corresponding end to our loop.
例如,这里有一个计算x+x的简单代码:
VM vm6 = new VM();
vm6.add("load x, 7");
vm6.add("load answer, 0");
vm6.add("loop x");
vm6.add("inc answer");
vm6.add("inc answer");
vm6.add("end");
现在我想知道怎么写2^x,但是我在这上面花了很长时间有人能帮我吗?
编辑:我真的想出来了我使用了自己的嵌套循环解决方案。
最佳答案
看起来很简单,不是吗为了计算X^Y,你循环Y次,每次你把答案乘以X。答案开始是1(任何到零幂的都是1)。
load x, 2
load answer, 1
loop [power]
[multiply procedure]
end
上面提到的
[multiply procedure]
是乘法的加法。两个数相乘(x * y
)等于两个长度x
和y
的循环之间的交叉数。因此,就您的目的而言,乘以x * y
如下所示:load x, [x value]
load y, [y value]
load answer, 0
loop x
loop y
inc answer
end
end
所以整个2^x过程只是一系列循环:
load x, [power]
load base, 2
load answer, 1
loop x
load addition, 0 //reset the multiplier
loop answer
loop base
inc addition
end
end
load answer, addition // load answer with multiplied value
end
当然,如果你不能做嵌套循环,那你就太倒霉了。