Java实现的猴子吃桃问题算法示例
本文实例讲述了Java实现的猴子吃桃问题算法。分享给大家供大家参考,具体如下:
猴子吃桃问题
概述:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个;第二天又将剩下的桃子吃掉了一半,又多吃了一个;以后每天都吃前一天身下的一半零一个,到第n天再想吃的时候就只剩下一个桃子了,求第一天共摘了多少个桃子?
思路及演算步骤(求出共摘多少桃子的函数表达式):
离现在的天数作为变量
f(1)=1(剩下桃子的数目)
f(2)=f(3)-(吃掉了一些)= f(3)-(f(3)/2+1) = f(3)/2-1
....
f(n)=f(n+1)/2-1(递推公式)
所以可以得到递推公式:
f(n-1)=f(n)/2-1 => 2f(n-1)= f(n)-2 =>f(n)=2f(n-1)+2(这是我们想要的公式)
然后可以求出离现在任何天数时,猴子共摘下的桃子!
例如f(10)意思就是离现在10天的时候(10天以前猴子拥有的桃子的个数)!
下面给出具体的代码:
packagejavastudy; importjava.util.Scanner; publicabstractclassTestit2{ //猴子吃桃问题 publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); intn; n=in.nextInt(); System.out.println(f(n)); in.close(); } staticintf(intn){ if(n==1)//离现在只有一天的时候那就只剩下一个! return1; return2*f(n-1)+2; } }
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。