我们设计了一个具有以下语法的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)等于两个长度xy的循环之间的交叉数。因此,就您的目的而言,乘以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

当然,如果你不能做嵌套循环,那你就太倒霉了。

07-26 02:04