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