zoukankan      html  css  js  c++  java
  • 2016京东编程题:抛小球

    题目描述

    小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数)

    给定四个整数A,B,C,D,请返回所求结果。

    测试样例:
    100,90,80,70
    返回:1020
    解题

    感觉很简单,但是在double to int 上出现了问题,参看讨论有下面答案
    import java.util.*;
    
    public class Balls {
        public int calcDistance(int A, int B, int C, int D) {
            // write code here
            double result = 0.0;
            result = getDistance(A) + getDistance(B) + getDistance(C) + getDistance(D);
            return (int)result;
        }
        public double getDistance(double n){
            if(n==0)
                return 0;
            return n+n/2+getDistance(n/2);
        }
    }

    就是下面这样写不对头

     public double getDistance(double n){
            if(n==0)
                return 0;
            // return n+n/2+getDistance(n/2);
            double result = 0.0;
            
            while(n!=0){
                result +=n + n/2;
                n/=2;
            }
            return result;
        }

    这里我感觉应该是double的问题,后面的精度省略了,而通过递归都是相加的

    在讨论中,更神奇的就是直接求出答案,手敲了下面计算过程:

    答案直接就是3*(A+B+C+D)

  • 相关阅读:
    Lightmaping
    Android内存回收机制
    基本光照模型简单实现
    Pass的通用指令开关
    使用Depth Texture
    使用替换shader渲染
    Windows下安装Oracle12C(一)
    SpringMVC文件上传基础
    Spring集成线程池
    《经久不衰的Spring框架:@ResponseBody 中文乱码》(转)
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5384597.html
Copyright © 2011-2022 走看看