ホームページ  >  記事  >  Java  >  Javaでの桃を食べる猿問題アルゴリズムの実装例

Javaでの桃を食べる猿問題アルゴリズムの実装例

黄舟
黄舟オリジナル
2017-10-18 10:24:191955ブラウズ

この記事では、主に Java で実装された桃を食べる猿の問題のアルゴリズムを紹介します。桃を食べる猿の問題を簡単に説明し、Java で桃を食べる猿の問題を解決するための具体的な実装テクニックを例の形で示します。記事

この例では、Java で実装された桃を食べる猿の問題アルゴリズムについて説明します。参考までに、詳細は以下の通りです:

桃を食べる猿の問題

概要: 猿は初日にN個の桃を収穫し、足りなかったので食べました。 2日目にティアンは残りの桃を半分ともう1つ食べました。n日目にもう一度食べようとすると、残りの桃は1つだけになりました。 . お願いします 初日に桃は何個収穫されましたか?

考え方と計算手順(桃を合計何個摘むかを求める関数式):

今からの日数を変数とする

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での桃を食べる猿問題アルゴリズムの実装例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。