A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?


9 个回复

倒序浏览
  1. public class Main {
  2. private double TotalHeight = 100;
  3. private double CurHeight = 50;

  4. public void drop(int times) {
  5. if ((times - 1) == 0) {
  6. return;
  7.            }

  8. setTotalHeight(getTotalHeight() + 2 * getCurHeight());
  9. setCurHeight(getCurHeight() / 2);

  10. drop(times - 1);
  11.         }

  12. public double getTotalHeight() {
  13. return TotalHeight;
  14.         }

  15. public void setTotalHeight(double totalHeight) {
  16. TotalHeight = totalHeight;
  17. }

  18. public double getCurHeight() {
  19. return CurHeight;
  20.        }

  21. public void setCurHeight(double curHeight) {
  22. CurHeight = curHeight;
  23.       }

  24. public static void main(String[] args) {
  25. Main main = new Main();
  26. main.drop(2);
  27. System.out.println("Total height is " + main.getTotalHeight());
  28. System.out.println("Current height is " + main.getCurHeight());
  29.         }
  30. }
复制代码
回复 使用道具 举报

感觉这个代码不是很好,但我想不出来更好的。。。
回复 使用道具 举报
不会是课程设计吧?
回复 使用道具 举报
  1. package com.cai.test;

  2. public class FFBody {
  3.        
  4.         public static void main(String[] args){
  5.                 freeFallingBody(0F,100F,1);
  6.         }
  7.        
  8.         /**
  9.          *
  10.          * @param distance  小球经过距离
  11.          * @param initHigh  小球反弹高度
  12.          * @param times     小球第times次落下
  13.          */
  14.         public static void freeFallingBody(double distance,double initHigh,int times){
  15.                 if(times<10){
  16.                         distance += initHigh*1.5;
  17.                         initHigh *= 0.5;
  18.                         times++;
  19.                         //递归
  20.                         freeFallingBody(distance,initHigh,times);
  21.                        
  22.                 }else if(times==10){
  23.                         distance += initHigh*1.5;
  24.                         initHigh *= 0.5;
  25.                        
  26.                         System.out.println("小球第"+times+"次时经过"+distance+"米");
  27.                         System.out.println("小球第"+times+"次时反弹"+initHigh+"米");
  28.                 }
  29.         }

  30. }
复制代码
回复 使用道具 举报 1 0
长知识了
回复 使用道具 举报
用右移1位会不会更好
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-9-14 23:48:26
8#
6楼上说的很好
回复 使用道具 举报
lq你微笑时好美 来自手机 中级黑马 2014-9-15 00:14:07
9#
大神…………
回复 使用道具 举报
想去黑马真不容易啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马