欢迎选择我的课程,让我们一起见证您的进步~~
height = (1/2)*height ; 應為 height = (1.0/2)*height ;, 否則它的值恆為 0.
height = (1/2)*height ;
height = (1.0/2)*height ;
因為 數值運算的型別轉換,導致整數的除法的結果也為整數, 所以 1/2的結果為 0, 而不是 0.5.
1/2
還有 y 每次循環都重置了. 改為:
public class Demo { public static void main(String[] args){ //小球的高度 double height = 100; //小球经过的距离 double y = 0; for(int i=1;i<=10;i++){ //记录小球每次往下落的距离,球弹起和下落,所以 height * 2 y = y + height*2; //反弹的高度 height = (1.0/2)*height ; } // 第一次落地没有经历弹起过程,需减掉初始高度 y = y - 100; System.out.println("共经过"+y+"米"); System.out.println("第10次反弹的高度是:"+height+"米"); } }
y = height 每次循環都重置了 y 值,哪裡是在累積中…
y = height
JavaScript 程式碼演算法示意
var height = 100 var sum = height; for (var i = 2; i <= 10; i++) { sum += height; height /= 2 } // sum == 299.609375,即总路程 // 最后一次是第10次弹起再下落的总长,所以再除以2才是弹起的高度 height /= 2; // 0.09765625
所以程式碼可以這樣寫public class Demo {
public static void main(String[] args){ //小球的高度 double height = 100; //第一次小球经过的距离 double y = height; //不算上第一次,到第10次还要经历9次 for(int i=1;i<=9;i++){ //反弹的高度每次都是前一次的一半 height = (1/2)*height; //每一次弹跳往返都是高度的两倍 y += height*2; } System.out.println("共经过"+y+"米"); System.out.println("第10次反弹的高度是:"+height+"米"); }
}
height = (1/2)*height ;
應為height = (1.0/2)*height ;
, 否則它的值恆為 0.因為 數值運算的型別轉換,導致整數的除法的結果也為整數, 所以
1/2
的結果為 0, 而不是 0.5.還有 y 每次循環都重置了. 改為:
y = height
每次循環都重置了 y 值,哪裡是在累積中…JavaScript 程式碼演算法示意
所以程式碼可以這樣寫
public class Demo {
}