Javascript 计算2^10 //计算2^10 var基数=2; 无功功率=0; var-answer=1; 同时(功率

Javascript 计算2^10 //计算2^10 var基数=2; 无功功率=0; var-answer=1; 同时(功率,javascript,Javascript,为什么这不能产生1024个?它打印4。你应该这样做 // CALCULATE 2 ^ 10 var base = 2; var power = 0; var answer = 1; while ( power < 10 ) { answer = base * 2; power = power + 1; } alert(answer); var基数=2; 无功功率=0; var-answer=1; 同时(功

为什么这不能产生1024个?它打印4。你应该这样做

   // CALCULATE 2 ^ 10
   var base = 2;
   var power = 0;
   var answer = 1; 

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

   alert(answer);
var基数=2;
无功功率=0;
var-answer=1;
同时(功率<10)
{
答案=答案*2;
功率=功率+1;
}
警惕(回答);

您必须递增答案,否则它将始终具有相同的值,这是因为
base*2
将始终为4

我相信这句话:

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

alert(answer);
应该是

answer = base * 2;

这并不能真正回答您的问题(关于为什么会生成错误的值),但您可以使用来计算结果:

answer = answer * base;

因为
answer=base*2每次迭代。由于
base
从未改变,因此您正在进行的每次迭代
answer=2*2


请参阅其他答案了解您应该执行的操作。

这是因为无论您执行多少个循环周期,您总是将基数(2)乘以2,并将结果分配给
答案
变量。因此,不管是100万基数,答案总是4。

为什么不使用javascript的数学幂法:

您的逻辑有缺陷:

alert(Math.pow(2, 10));

这将解析为
answer=2*2
,无论循环增加多少次<代码>基本值不会更改。

您需要保存每个运算的结果,如下所示:

...
answer = base * 2; 
...
var基数=2;
无功功率=1;
var-answer=1;
答案=基数;
而(功率<10){
答案=答案*基数;
功率=功率+1;
}
警惕(回答);

这对你有帮助吗?

如果这是家庭作业。。。一个动态编程解决方案,当你进入递归和其他有趣的东西时会有所帮助:

该解决方案在计算方面为对数(y)

    var base = 2;
    var power = 1;
    var answer = 1; 

    answer = base;

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

     alert(answer);

如果不使用Math.pow()

是的,你可以,但我正在一本书中做练习,我们还没有达到目的。确切的说法是“利用你迄今所学的知识”。。。感谢您的回答(以及修改您的答案)。
1+1*2
->
3+1*2
->
5+1*2
等。。。试着回答*=2
,从我这里得到+1@industrian:这就是你的代码不起作用的原因。在循环之前,我使用answer=base定义base^1,然后将它乘以2,然后再乘以base,这样你的脚本就可以使用不同的base。
  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;
        }
}