基础算法一一股神问题
一、题目描述
股神问题:
买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天…依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
二、问题分析
将问题具体化:
通过将问题化解为子类问题后得知:每次的变化其实就是增加1、2、3、4、5、n次之后减1,首先我想到的是利用递归来解决该问题,但是递归的结束条件必须选好,之后我再利用while循环解决此问题得到方法二。
三、问题解决
1、方法一:利用递归解决
package com.demo1;import java.util.Scanner;public class Main {//初始值int price = 1;int days = 1;int add = 0;public static void main(String[] args) {Main main = new Main();Scanner scanner = new Scanner(System.in);System.out.println("请输入第n天(输出n天以前的所有价格):");int n = scanner.nextInt();main.getShare(n);}/*** 方法一、利用递归* @param n*/public void getShare(int n) {add = add+1;//初始的“+”次数为1System.out.println("第"+days+"天"+": "+"股票值"+price+"元");for(int i=0;i<add;i++) {price = price+1;//价格+1days = days+1;//天数自动递增//判断当实际的天数大于我们想要输入的天数后,停止循环,输出结果if (days > n) {break;}else{System.out.println("第"+days+"天"+": "+"股票值"+price+"元");}}price = price-1;//价格减1days = days+1;//天数自动递增//递归:结束条件为当输入参数天数n大于等于实际天数if (days <= n) {getShare(n);//递归}}
}
结果:
2、方法二:利用while循环
(1)代码:
package com.demo1;import java.util.Scanner;public class Main {//初始值int price = 1;int days = 1;int add = 0;public static void main(String[] args) {Main main = new Main();Scanner scanner = new Scanner(System.in);System.out.println("请输入第n天(输出n天以前的所有价格):");int n = scanner.nextInt();main.getShare1(n);}/*** 方法二利用while* @param n*/public void getShare1(int n) {add = add+1;//初始的“+”次数为1System.out.println("第"+days+"天"+": "+"股票值"+price+"元");//类似于递归,同样也是对子类问题循环while(true) {for(int i=0;i<add;i++) {price = price+1;//价格+1days = days+1;//天数自动递增//判断当实际的天数大于我们想要输入的天数后,停止while循环,输出结果if (days > n) {break;}System.out.println("第"+days+"天"+": "+"股票值"+price+"元");}add = add+1;price = price-1;//价格减1days = days+1;//天数自动递增//判断当实际的天数大于我们想要输入的天数后,停止while循环,输出结果if (days > n) {break;}System.out.println("第"+days+"天"+": "+"股票值"+price+"元");}}
}
(2)结果
两种方法的运行时间比较:
简单编写代码测试数据,从数据少的情况到数据大的情况分析。
(1)选择方法一输入n=10的数据。
选择方法一输入n=100的数据。
选择方法二输入n=1000的数据。
(2)选择方法二输入n=10的数据。
选择方法二输入n=100的数据。
选择方法二输入n=1000的数据。
粗略测试之后得出的结论:while循环方法在数据量相对大的情况下都会比递归方法运行时间短,执行效率相对比较高。
当然这是因为递归算法在函数调用过程中,包括一些变量的初始化,函数的出栈入栈等等造成相对大的资源消耗导致的运行效率较低,但并不是大家认为的递归算法都是低效率的。通过优化的递归算法值得学习,还有树形结构、文件的相关操作都会用到递归算法。
PS:如有做的不好的地方或者有更好的算法,非常欢迎多多指教。
基础算法一一股神问题相关推荐
- [算法JS]-股神(股票第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推)...
这个是赛码网上的编程题,在这个网站上刷算法真是费劲啊,因为,编译不通过的时不会告诉你编译错误的地方,所以,对码代码的规范性和准确性要求还是挺苛刻的... 题目描述 有股神吗? 有,小赛就是! 经过严密 ...
- 赛马网基本算法之一 (股神问题)
题目描述 有股神吗? 有,小赛就是! 经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推. 为 ...
- 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记
一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...
- (转)量子位:这个AI股神把顶级对冲基金吓尿了
每次都能盈利,自己学会抄底,这个AI股神把顶级对冲基金吓尿了 量子位 https://zhuanlan.zhihu.com/p/29750335?utm_medium=social&utm_s ...
- 昨日,全球股市进入ICU!89岁股神巴菲特惊叹活久见!苹果微软万亿美金市值摇摇欲坠...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 昨日,全球股市进入ICU! 美股遭遇史上第三次熔断--第一次是在1997年,第二次 ...
- 活久见!巴菲特被诈骗50亿,股神真的糊涂了?
本文经授权转载自公众号"无相财经" ID | wuxiangcj 作者 | 无相出品 国运的上升和下降,与个人息息相关. 粤语里有一个词,叫"老猫烧须". 意思 ...
- 1. 通用基础算法(1.7动态规划算法/1.8模拟算法/1.9其他算法)
7 动态规划算法 动态规划(Dynamic Programming)是求多阶段决策过程(Multistep Decision Process)最优化的一种数学方法,它将问题的整体按时间或空间的特征分 ...
- 力扣股神之路动态规划
股神之路 买股票最佳时机 买股票最佳时机2 309. 最佳买卖股票时机含冷冻期 714. 买卖股票的最佳时机含手续费 买股票最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i ...
- Pascal 基础算法教案
基础算法教案 目录 第一课 算法简介... 1 第二课 多精度数值处理... 1 第三课 排列与组合... 6 第四课 枚举法... 9 第五课 递归与回溯法... 25 第六课 递推法 ...
最新文章
- 基本系统部署完成!北斗三号闪耀中国智慧
- 漫画:什么是 “抽象工厂模式” ?
- 水抗攻击 apt攻击手段
- Java线程详解(16)-条件变量
- Linux:hping高级主机扫描
- XidianOJ 1099 A simple problem
- Android Gradle编译问题
- C#打开文件和文件夹
- Django讲课笔记03:创建Django项目
- 运行gclient一直没反应_安川变频器通电没反应维修措施分享
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 【Django 2021年最新版教程28】前端模板中 时间日期星期格式化
- 3、Keras中的顺序模型Sequential和函数式模型Model
- 热传导方程有限差分法实现matlab,热传导方程有限差分法的MATLAB实现-史策
- Shiro-单点登录原理
- LaTeX及TeXstudio下载地址
- 【软考系统架构设计师】2021年下系统架构师案例分析历年真题
- Katana如何渲染序列
- 零基础入门:基于开源WebRTC,从0到1实现实时音视频聊天功能
- spark(scala) shell 里面输入多行代码
热门文章
- 关于GPL协议的理解(开源与商用、免费与收费的理解)
- GPL和LGPL的区别!
- StarUML3.0 的破解方法
- 上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧
- 服务器-Squid代理服务器及应用
- Android实现截屏的方法
- Python调用WPS进行文档转换PDF及PDF转图片
- 时间序列分析中的自相关
- 用户画像标签数据存储之Elasticsearch存储
- ✖ 2 problems (0 errors, 2 warnings) 0 errors and 2 warnings potentially fixable with the `--fix`