1. Penser
Le problème du lapin est une déclaration figurative de la série Fischer, qui est une question soulevée dans ses œuvres par un mathématicien nommé Fibonacci.
2. Description
Le problème avec sa technique physique est: si un bébé donne naissance à un bébé chaque mois, le bébé commence à accoucher un bébé un mois plus tard. Au début, il n'y avait qu'un seul bébé, et il y avait deux bébés garçons en un mois, trois bébés garçons en deux mois et cinq bébés garçons en trois mois (le petit petit garçon a été mis en production) ...
Nous l'exprimons de manière mathématique, qui est l'ensemble de séquences suivant:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ......
Remarque: le nouveau-né mettra un mois pour commencer la production! Et ces lapins sont immortels! ! !
3. Règles
Lorsque nous sommes inexplicablement exposés à ce problème, il est difficile de trouver les règles, mais de réfléchir à ce problème en fonction des lois des séquences en mathématiques et d'attendre la comparaison? Différence d'avatar? Ou autre chose? Puisqu'il s'agit d'une question soulevée par les mathématiciens, il devrait y avoir certaines règles mathématiques, non? Quelle est la règle? Si vous analysez soigneusement l'ensemble de séquences ci-dessus, vous avez déjà la réponse. C'est vrai, il s'exprime en une phrase. À partir du troisième terme, la somme des deux premiers termes est égale au troisième terme.
En supposant que la valeur du nième terme est FN, la régularité de la séquence est exprimée comme suit en utilisant des formules mathématiques:
4. Pseudocode
Le soi-disant pseudo-code n'est pas du code réel. Il ne peut pas être exécuté sur la machine. C'est juste un symbole significatif entre le langage naturel et le langage de programmation qui exprime la logique du programme. Pour le pseudocode du problème du lapin, nous utilisons la méthode récursive de la formule ci-dessus ici, et nous pouvons avoir le pseudocode suivant:
Procédure fib (n) [if (n <0) print ("Erreur d'entrée"); If (n = 0 ou n = 1) return (n); Else return (fib (n-1) + fib (n-2)); ]]Selon le concept de récursivité décrit dans l'article précédent, vous pouvez vous référer au «problème Hanno» précédent pour plus de détails. Par rapport à tous, vous ne serez plus trop familier avec la récursivité. Ensuite, sur la base des formules mathématiques que nous avons obtenues ci-dessus, déduire un tel pseudocode de récursivité sera très concis et clair. Mais, euh, vous l'avez peut-être deviné, je veux le dire. Avez-vous trouvé un problème que lorsque notre valeur N est trop grande, le programme sera plus lent?
Si vous le découvrez, cela signifie que vous avez pensé à ce problème sérieusement, et vous devriez également résoudre les doutes dans votre cœur. S'il n'y a toujours pas de doute qui est résolu, permettez-moi de résoudre les doutes de tout le monde. Pourquoi est-il plus lent? La raison en est que lorsque nous calculons le nième terme, nous devons calculer à nouveau les termes N-1 et N-2, et les deux termes ont été calculés auparavant. Lorsque nous trouvons le numéro suivant, nous devons toujours le calculer sur le côté. Invisiblement, nous avons fait beaucoup de travail inutile.
Alors, avons-nous un bon moyen de résoudre ce problème? Il y a une réponse. Selon l'analyse ci-dessus, lorsque nous résolvons le nième terme, les termes N-1 et N-2 précédents ont été résolus. Alors, pourquoi ne le sauvons-nous pas? ? ? ?
Haha, tu t'es soudainement réalisé? Oui! Nous utilisons l'espace pour échanger du temps ici, ce qui peut considérablement améliorer l'efficacité! Je n'écrirai pas ici.
5. Code
Ok, j'ai tout vendu, il suffit de télécharger le code:
classe publique fibonacci {public static void main (String [] args) {int [] fib = new int [20]; fib [0] = 0; fib [1] = 1; for (int i = 2; i <fib.length; i ++) {fib [i] = fib [i-1] + fib [i-2]; } pour (int i = 0; i <fib.length; i ++) {System.out.print (fib [i] + ""); } System.out.println (); }}6. Penser
Ici, nous proposons une question de réflexion. Si un lapin ne donne pas naissance à un lapin et à plusieurs lapins, comment devrions-nous le résoudre? Bien sûr, ce que nous entendons en donnant naissance à plusieurs est un nombre fixe. Un lapin ne donnera pas naissance à plus et un lapin ne donnera pas naissance à moins, sinon il sera impossible de le résoudre.
Il n'y a pas de code ici. Vous pouvez trouver les ressources appropriées en ligne et voir comment les résoudre.
Résumer
Ce qui précède est tout le contenu de cet article sur l'analyse du code de la langue Java pour résoudre les problèmes de lapin. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler!