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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

胡言乱语

初级黑马

  • 黑马币:42

  • 帖子:15

  • 精华:0

© 胡言乱语 初级黑马   /  2018-8-3 10:01  /  594 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*题目
寻找某两个数相除,其结果 离黄金分割点 0.618最近

        分母和分子不能同时为偶数
        分母和分子 取值范围在[1-20]*/
[Java] 纯文本查看 复制代码
/*题目
寻找某两个数相除,其结果 离黄金分割点 0.618最近

        分母和分子不能同时为偶数
        分母和分子 取值范围在[1-20]*/
public class HuangJinBiLi {
    public static void main(String[] args) {
        double shang = 0;//储存a和b的商
        double chaZhi = 0;//储存和0.618的差值
        double mina = 0;//储存当差值最小时a的值
        double minb = 0;//储存当差值最小时b的值
        double min = 1000;//判断和储存最小的差值
        //嵌套循环,遍历所有的除法可能性
        for (double a = 1; a <= 20; a++) {
            for (double b = 1; b <= 20; b++) {
                //判断a和b是否全为偶数,即至少有一个奇数即可
                if (a % 2 != 0 || b % 2 != 0) {
                    shang = a / b;
                    //两个办法,一个是先判断商和0.618的大小,再进行相减
                    //二是利用三元运算符进行判断正负和取正
                 /* if (shang > 0.618) {
                        chaZhi = shang - 0.618;
                    } else {
                        chaZhi = 0.618 - shang;
                    }*/
                    //先取差值,再三元运算符进行判断正负和取正如果为负就0-差值,即可得正
                    chaZhi = shang - 0.618;
                    chaZhi = chaZhi < 0 ? 0 - chaZhi : chaZhi;
                    //判断差值最小的情况,如果和chaZhi比较后差值更小,则进行储存
                    if (min > chaZhi) {
                        min = chaZhi;
                        mina = a;
                        minb = b;
                    }
                }
            }
        }
        System.out.println(min + " " + mina + " " + minb);
    }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马