写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

这博客是对自己学习的一点点总结及记录,如果您对 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

本文转载:CSDN博客