小球從 100 米高度落下,每次落地反彈回原高度一半,再落下。求:
#includeint main() { int i; double sum = 100; // 第一次下落 100m double h = 100; // 當前高度 for (i = 0; i < 10; i++) { h = h / 2; // 反彈高度 sum += h * 2; // 反彈上去 + 落下來 } printf("總路程: %lf\n", sum); printf("第10次反彈高度: %lf\n", h); return 0; }
| i | 動作 | h(反彈高度) | sum 增量 | sum 累計 |
|---|---|---|---|---|
| 0 | 初始下落 | 50 | +100 | 100 |
| 1 | 第1次反彈上+落 | 25 | +100 | 200 |
| 2 | 第2次反彈上+落 | 12.5 | +50 | 250 |
| … | … | … | … | … |
| 9 | 第10次反彈上+落 | 0.1953125 | +0.390625 | 299.609375 |
迴圈執行 10 次(i=0~9),對應第 1~10 次反彈。最終 h 為第 10 次反彈高度。
總路程: 299.609375 第10次反彈高度: 0.195313