// 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计算2^10
// 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计算2^10
这是因为base * 2
将永远是4
我相信这条线:
answer = base * 2;
应该是
answer = answer * base;
哟应该这样做
var base = 2;
var power = 0;
var answer = 1;
while (power < 10)
{
answer = answer * 2;
power = power + 1;
}
alert(answer);
你必须增加答案,否则它将始终具有相同的值
真的吗?重读这 – 2011-06-15 18:02:02
'1 + 1 * 2' - >'3 + 1 * 2' - >'5 + 1 * 2'等...尝试'回答* = 2'来代替。 – 2011-06-15 18:03:24
对不起,我很困惑。 – JAiro 2011-06-15 18:05:28
因为answer = base * 2;
每次迭代。由于base
永远不会改变,每一次迭代你正在做answer = 2 * 2;
。
见你应该是做什么其他的答案。
这是因为无论你有多少个循环周期做什么,你总是(2)乘以2基地和结果分配给answer
变量。所以,无论是一个或万个碱基,答案永远是4
你为什么不使用数学方法功率为JavaScript:
你的逻辑是有缺陷的:
...
answer = base * 2;
...
这解析为answer = 2 * 2
,不管你有多少次递增循环。 base
不会更改。
您需要保存的结果各oparation的,就像这样:
var base = 2;
var power = 1;
var answer = 1;
answer = base;
while (power < 10) {
answer = answer * base;
power = power + 1;
}
alert(answer);
这可以帮助您?
在循环之前,我使用answer = base来定义base^1,然后将它乘以2,但再次以base为基数,因此您的脚本可以使用不同的基数。 – 2011-06-15 18:14:21
如果这是功课...一个动态规划的解决方案当你进入递归和其他有趣的东西,这将有助于:
该解决方案是在计算方面日志(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()
+1来自我。 @industrian:这就是你的代码不工作的原因。 – 2011-06-15 18:04:41