计算2 ^ 10

时间:2011-06-15 17:59:22

标签: javascript

   // 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。

9 个答案:

答案 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 * 2base不会改变。

答案 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的数学幂方法:

http://www.w3schools.com/jsref/jsref_pow.asp

答案 8 :(得分:-1)

哟应该这样做

var base = 2;
var power = 0;
var answer = 1; 
while ( power < 10 )
{
   answer = answer * 2;
   power = power +  1;  
}

alert(answer);

你必须增加答案,否则它将始终具有相同的值