题目描述有股神吗?
有,小赛就是!
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
题意已经很清晰了,主要就是试探解题思路,直接上代码:
手动计算前10天的金额: 1、2、1、2、3、2、3、4、5、4/** * 题目描述 * 有股神吗? * 有,小赛就是! * 经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化: * 第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。 * 为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱? * @author xiaowei 2017年11月16日 下午3:53:16 */ public class GuShen { public static void main(String[] args) { GuShen guShen = new GuShen(); try { System.out.println(guShen.moneyOfDay(10)); } catch (Exception e) { e.printStackTrace(); } } /** * 计算某天持有的金钱 */ public int moneyOfDay(int day) throws Exception { if (day < 1) { throw new Exception("错误的天数!"); } if (day == 1) { return 1; } // 金额 int money = 1; // 涨周期天数 int count = 1; // 是否上涨 boolean isUp = true; for (int i = 1; i <= day; i++) { // 涨周期 if (isUp) { int j = 1; for (; j <= count; j++) { if (i + j > day) { return money; } money++; } count++; isUp = false; i += j - 1; } else { money--; isUp = true; } } return money; } }
程序输出结果:
4
面试题之“股神”
最新推荐文章于 2018-03-21 17:43:32 发布