Rumah >Java >javaTutorial >Java中猴子吃桃问题算法实现的示例

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

黄舟
黄舟asal
2017-10-18 10:24:191996semak imbas

这篇文章主要介绍了Java实现的猴子吃桃问题算法,简单描述了猴子吃桃问题并结合实例形式给出了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天以前猴子拥有的桃子的个数)!

下面给出具体的代码:


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;
  }
}

Atas ialah kandungan terperinci Java中猴子吃桃问题算法实现的示例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn