用 PL 写 2^x

Writing 2^x in PL

我们设计了一个具有以下语法的 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

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