高度 H,彈性係數 k=0.5 (彈回一半)。
HH * k^i2 * H * k^i (上+下)#includefloat total_distance(float h, int n) { float sum = h; // 第一次落下 float cur = h * 0.5; // 第一次彈起高度 for (int i = 1; i < n; i++) { sum += 2 * cur; // 彈起 + 落下 cur *= 0.5; } return sum; } float nth_rebound_height(float h, int n) { for (int i = 0; i < n; i++) h *= 0.5; return h; } int main() { int n; printf("請輸入次數: "); scanf("%d", &n); printf("總路程: %.4f\n第%d次彈高: %.4f\n", total_distance(100, n), n, nth_rebound_height(100, n)); return 0; } // n=10 -> 總路程 299.6094, 彈高 0.0977
總路程 S_n = H + 2Hk(1 - k^{n-1})/(1-k) (等比數列求和)。
第 n 次彈高 H * k^n。