先来看下著名的“李白沽酒”问题:
李白提壶去买酒,遇店加一倍,见花喝一斗;三遇店和花,喝光壶中酒。试问壶中原有多少酒?
对于这道题,用数学知识挺好解决的:
设壶中原有x斗酒,由题意得:
2[2(2x-1)-1]-1=0
解得x=7/8
列个方程就搞定,so easy!
学以致用,那我们就用java编程来解决。
分析:
遇到店,将酒加一倍,遇到花,喝一斗酒。经过逆推理,也就是当第三次遇到店和花之前,壶中有酒0.5斗,即壶中加酒1斗后,再除以2。那么当第二次遇到店和花之前,壶中酒为0.75斗,即壶中酒1斗除以2后,再加1斗……以此类推,可以得出以下的代码模型:
壶中有酒x=0斗
for(int i = 3; i > 0; i-- ){
遇花喝一斗x=x+1
遇店加一倍x=x/2
}
有了模型,我们就可以敲代码了,这是完整代码截图:
把题目改成李白“十遇店和花”、“百遇店和花”呢?假如李白没有醉倒在街边上,走完全程。我们只需要修改循环条件,就可以求出李白壶中原来的酒有多少。
4000G java高级架构师进阶视频下载
21套精品Java架构师高并发高性能高可用分布式集群电商缓存性能调优设计项目实战视教程
今日头条号:搜索 "JavaLeader" (欢迎大家关注支持,头条更精彩)
java资源分享总群(六) :238600498 java招聘信息共享群:489895481
java微信技术群:微信搜索1257572500加好友,拉入群内。
专注互联网热点信息,java干货,行业最新技术视频分享,我们的宗旨就是做全网最全最大的java视频教免费平台。我们有适合不同阶段人群的干货。我们的平台聚焦了几万的java高级程序员和架构师。欢迎长按关注