Maison  >  Article  >  Java  >  Exemple d'implémentation d'un algorithme de problème de pêche avec un singe mangeant une pêche en Java

Exemple d'implémentation d'un algorithme de problème de pêche avec un singe mangeant une pêche en Java

黄舟
黄舟original
2017-10-18 10:24:191955parcourir

Cet article présente principalement l'algorithme du problème du singe mangeant une pêche implémenté en Java. Il décrit brièvement le problème du singe mangeant une pêche et le combine avec des exemples pour fournir des techniques de mise en œuvre spécifiques pour résoudre le problème du singe mangeant une pêche en Java. Les amis qui en ont besoin peuvent. référez-vous à lui

L'exemple de cet article décrit l'algorithme du problème du singe mangeant une pêche implémenté en Java. Je le partage avec vous pour votre référence. Les détails sont les suivants :

Problème de singe mangeant des pêches

Aperçu : Le singe a cueilli N pêches le premier jour et les a mangées. la moitié d'entre eux à ce moment-là. Toujours pas satisfait, j'ai mangé une autre pêche ; le lendemain, j'ai mangé la moitié des pêches restantes et j'en ai mangé une de plus, j'ai mangé la moitié et une de la pêche de la veille chaque jour, et je n'y ai pensé que le nième jour. Quand nous avons mangé, il ne restait qu'une pêche. Combien de pêches ont été cueillies le premier jour ?

Choses et étapes de calcul (l'expression fonctionnelle pour savoir combien de pêches sont cueillies au total) :

Le nombre de jours à partir de maintenant est utilisé comme variable

f (1) = 1 (Nombre de pêches restant)
f(2) = f(3) - (en a mangé) = f(3) -(f(3)/2+1) = f(3)/ 2-1
....
f(n) = f(n+1)/2-1 (formule de récursion)

On peut donc obtenir la formule de récursion :

f(n -1) = f(n)/2-1 => 2f(n-1) = f(n) - 2 => C'est ce que nous voulons La formule)

Ensuite, vous pourrez connaître le nombre total de pêches cueillies par les singes à n'importe quel nombre de jours à partir de maintenant !

Par exemple, f(10) signifie dans 10 jours (le nombre de pêches que le singe avait il y a 10 jours) !

Le code spécifique est indiqué ci-dessous :


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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn