Javascript 计算2^10 //计算2^10 var基数=2; 无功功率=0; var-answer=1; 同时(功率
为什么这不能产生1024个?它打印4。你应该这样做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; 同时(功
// 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;
}
}