> 文档中心 > 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米? 保留两位小数

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米? 保留两位小数

用一个表格来找规律

假设初始高度m为100

s=m;M=m.

第一次 第二次 第三次 第n次

落地反弹高度h

50 25 12.5 h(n-1)/2
路程s

100+50

100+50+50+25

=100+100+25

100+50+50+25+25+12.5

=100+100+50+12.5

 循环(第n次就执行n次,n!=1)

  s+= M;
  M = M / 2;

#include#includeusing namespace std;int main(){ float m, n, s, h, M, N; cin >> m >> n; M = m; N = n; h = 0; s = m; while (n)    //求高度 {  h = m / 2;  m = m / 2;   n--; } for (int i = 1; i < N; i++)    //求路程,该循环反弹次数N不能取1 {  s += M;  M = M / 2; } cout << fixed << setprecision(2) << h << '\t'<< fixed << setprecision(2) <<s<<endl; return 0;}