// CALCULATE 2 ^ 10
var base = 2;
var power = 0;
var answer = 1;
while ( power < 10 )
{
answer = base * 2;
power = power + 1;
}
alert(answer);
为什么不产生1024?它打印4。
答案 0 :(得分:4)
这是因为base * 2
总是4。
我相信这一行:
answer = base * 2;
应该是
answer = answer * base;
答案 1 :(得分:4)
这并不能真正回答您的问题(至于为什么生成了错误的值),但您可以使用Math.pow
来计算结果:
alert(Math.pow(2, 10));
答案 2 :(得分:3)
你的逻辑存在缺陷:
...
answer = base * 2;
...
无论你增加循环次数,这都会解析为answer = 2 * 2
。 base
不会改变。
答案 3 :(得分:2)
因为answer = base * 2;
每次迭代。由于base
永远不会改变,因此您正在进行每次迭代answer = 2 * 2;
。
查看应正在做什么的其他答案。
答案 4 :(得分:2)
这是因为无论你做了多少循环周期,你总是将base(2)乘以2并将结果赋值给answer
变量。所以无论是一个还是百万个基数,答案总是4个。
答案 5 :(得分:1)
您需要保存每次操作的结果,如下所示:
var base = 2;
var power = 1;
var answer = 1;
answer = base;
while ( power < 10 ) {
answer = answer * base;
power = power + 1;
}
alert(answer);
这对你有帮助吗?
答案 6 :(得分:1)
如果这是作业...一个动态的编程解决方案,当你进入递归和其他有趣的东西时会有所帮助:
此解决方案在计算方面是log(y)。
function powers(x,y) {
if(y == 0) {
return 1;
} else if(y == 1) {
return x;
} else if(y == 2) {
return x*x;
} else if(y%2==0) {
var a = powers(x,y/2);
return a * a;
} else {
var pow = y-1;
var a = powers(x,pow/2);
return x * a * a;
}
}
如果不使用Math.pow()
答案 7 :(得分:0)
为什么不使用javascript的数学幂方法:
答案 8 :(得分:-1)
哟应该这样做
var base = 2;
var power = 0;
var answer = 1;
while ( power < 10 )
{
answer = answer * 2;
power = power + 1;
}
alert(answer);
你必须增加答案,否则它将始终具有相同的值