欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现的猴子吃桃问题算法示例

程序员文章站 2024-04-01 22:02:46
本文实例讲述了java实现的猴子吃桃问题算法。分享给大家供大家参考,具体如下: 猴子吃桃问题 概述:猴子第一天摘下n个桃子,当时就吃了一半,还不过瘾,就又吃了一个;第二...

本文实例讲述了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算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。