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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lipingan0520 中级黑马   /  2013-4-14 17:10  /  1077 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lipingan0520 于 2013-4-15 13:10 编辑

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?
可以用递归实现吗?

2 个回复

倒序浏览
当然可以,建议你先自己试着写一下,如果哪里有不明白的,还能更有针对性的提出问题,谢谢
回复 使用道具 举报
  1. public class Distance {


  2.              //把一次弹起和一次下落看为一个单位,比如第一次弹起s米,
  3.              //下落s米,则在第一个单位内运行了反弹高度的两倍2s.
  4.     public static float distance(int num,float s){
  5.       
  6.             //这里把num=10时看为第一次弹起,以此类推       
  7.       if(num>1)
  8.                return  distance(num-1,s/2)+2*s;// s/2表示每次落地后反跳回原高度的一半
  9.        else
  10.        {
  11.                System.out.println ("第十次弹起高度:"+s);
  12.                return 2*s;
  13.        }
  14.                    
  15.             }
  16.                    
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                 float sum=distance(10,50);//此时没有包括第一次下落的距离
  20.                 System.out.println ("球运行的总路程为:"+(sum+100));//sum加上最初的高度100米,就是球运行总长度

  21.         }

  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马