写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。
技术是开源的、知识是共享的。
这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。
用知识改变命运,让我们的家人过上更好的生活
。
相关文章
这也是一个公司的小算法面试题
题目:一个小球从距离地面100米高空自由落下,每次落地后回弹原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹的高度是多少?
题目分析:
这个题目的关键在于反弹高度,第一次反弹后,再次弹起来的高度不是100米,而是50米,落地后50米,第二次反弹又变成前一次的一半,即25米,在落地,也是25米,第三次能反弹12.5米。。。
代码实现:
public class FreeFall {
public static void main(String[] args) {
System.out.println("输入小球下落的高度:");
Scanner scanner = new Scanner(System.in);
//小球下落的高度
float h = scanner.nextFloat();
System.out.println("输入小球落地次数:");
//落地次数
float n = scanner.nextFloat();
//经过的路径总和
float sum = h;
h = h / 2;
for (int i = 2; i <= n; i++) {
sum += h * 2;
h = h / 2;
}
System.out.println(n + "次后,能反弹:" + h + "米,经过的路程:" + sum + "米");
}
}
代码执行结果:
输入小球下落的高度:
100
输入小球落地次数:
10
10.0次后,能反弹:0.09765625米,经过的距离:299.60938米