使用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天以前猴子拥有的桃子的个数)!
下面给出具体的代码:
package javastudy; import java.util.Scanner; public abstract class Testit2 { // 猴子吃桃问题 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; n = in.nextInt(); System.out.println(f(n)); in.close(); } static int f(int n) { if (n == 1) //离现在只有一天的时候那就只剩下一个! return 1; return 2 * f(n - 1) + 2; } }
看完上述内容,你们掌握使用Java怎么实现一个猴子吃桃问题算法的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。