开发者

Calculating 2 ^ 10

开发者 https://www.devze.com 2023-03-13 10:18 出处:网络
// CALCULATE 2 ^ 10 var base = 2; var power = 0; var answer = 1; while ( power < 10 ) { answer = base * 2;
   // CALCULATE 2 ^ 10
   var base = 2;
   var power = 0;
   var answer = 1; 

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

   alert(answer);

Why doesn't this produce 1024? 开发者_StackOverflowIt prints 4.


It is because base * 2 will always be 4.

I believe this line:

answer = base * 2;

Should be

answer = answer * base;


This doesn't really answer your question (as to why the wrong value is generated) but you can use Math.pow to calculate the result:

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


Your logic is flawed:

...
answer = base * 2; 
...

This resolves to answer = 2 * 2, no matter how many times you increment the loop. base does not change.


Because answer = base * 2; every iteration. Since base never changes, every iteration you are doing answer = 2 * 2;.

See other answers for what you should be doing.


This is because no matter how many loop cycles you do, you always multiply base (2) by 2 and assign the result to answer variable. So be it one or million base, the answer will always be 4.


You need to save the result of each oparation, like this:

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

    answer = base;

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

     alert(answer);

This helps you?


If this is for homework... A dynamic programming solution which will help when you get into recursion and other fun stuff:

This solution is log(y) in terms of calculations.

  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;
        }
}

If not use Math.pow()


Why don't you use the math power method for javascript:

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


yo should do this

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

alert(answer);

You have to increment answer otherwise It will always have the same value

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号