Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Deviner un nombre. Algorithme récursif

Posté par
aida1807
03-01-12 à 19:47

Bonsoir,
Voici l'énoncé d'un de mes exercices:
Ecrire un algorithme récursif réalisant le jeu suivant : on a en entrée
un nombre entier Nombre. L'utilisateur doit le deviner en faisant des propositions,
à chaque proposition fausse on lui répond "trop grand" ou "trop petit".
Lorsque l'utilisateur trouve le nombre on lui répond "c'est gagné" et le jeu est
terminé.

J'ai beau réfléchir à cet exercice, je ne vois pas comment en peut le résoudre avec un algorithme récursif. Je ne veux pas de solution, ou qu'on me poste l'algorithme tout fait. Mais si quelqu'un pouvait m'expliquer ce qu'on attend de moi, j'y arriverai peut-être. Si on m'avait laissé le choix, j'aurais choisi une fonction itérative, je pense. Mais là, je ne vois pas...
Merci d'avance,
Bonne soirée,
Aïda

Posté par
pgeod
re : Deviner un nombre. Algorithme récursif 03-01-12 à 20:57

syntaxe mise à part, un truc du genre :

trouve (x , y)
   if x <> y
      x = ?
      if x < y "trop petit"
      else if y < x "trop grand"
      else "trouvé"
      trouve(x, y)

Posté par
aida1807
re : Deviner un nombre. Algorithme récursif 03-01-12 à 21:15

Je pensais bien à un truc dans le genre mais ce n'est pas une fonction récursive. Si?

Posté par
Surb
re : Deviner un nombre. Algorithme récursif 03-01-12 à 21:31

Bonjour,

Tu peux introduire une "récursion" en proposant un intervalle à l'utilisateur. En effet quelque chose du genre:
1) Choisir un nombre entre -infini et +infini -> 67 -> trop grand
2) Choisir un nombre entre -infini et 67 -> -144 -> trop petit
3) Choisir un nombre ne tr -144 et 67...
etc...
Mais dans ce cas c'est plus exactement ce que l'on te demande, en fait ça serait plus intéressant de poser dans l'autre sens. L'utilisateur choisi un nombre dans sa tête et l'ordinateur doit le deviner (là il y a vraiment moyen d'utiliser une récursion en utilisant cette méthode).

Posté par
pgeod
re : Deviner un nombre. Algorithme récursif 03-01-12 à 21:33

elle est bien récursive, puisque la fonction
s'appelle explicitement elle-même.

on doit même pouvoir la simplifier comme cela :

trouve (y)
    x = ?
    if x < y "trop petit"; trouve(y)
    else if y < x "trop grand"; trouve(y)
    else "trouvé"

Posté par
aida1807
re : Deviner un nombre. Algorithme récursif 04-01-12 à 07:44

Bonjour,
Merci Surb et Pgeod.

Surb: je comprends ce que tu veux dire, après je ne sais pas si j'y arriverais (je débute à peine en algorithmique). Question hors-sujet: en pratique, si je n'ai aucune contrainte, vaut il mieux utiliser une formule récursive ou itérative pour ce genre de problème?

Pgeod: oui, je commence à comprendre. Ce qui me gênait c'est que dans les deux trois exemples dans mon cours, si on cherche factorielle(n), on appellera factorielle(n-1). De même avec la suite de Fibonacci. Je n'avais pas pensé que là aussi on peux parler de fonction récursive...

Merci encore à tous les deux. Je vais réessayer en suivant vos conseils.
Bonne journée,
Aïda

Posté par
pgeod
re : Deviner un nombre. Algorithme récursif 04-01-12 à 09:25

Posté par
aida1807
re : Deviner un nombre. Algorithme récursif 07-01-12 à 10:56

Bonjour,
Voici l'algorithme rédigé. Je pense qu'il est correct:


fonction Devinombre (val x : entier) : bool
var y : entier ;
debut
   lire (y) ;
   si (y==x) alors
          retourner (« c'est gagné ») ;
   sinon
      si (y<x) alors
          afficher (« Trop petit ») ;
      retourner ( Devinombre (x)) ;
      sinon
          afficher (« Trop grand ») ;
          retourner (Devinombre (x)) ;
      finsi ;
      finsi ;
fin
finfonction

Merci encore pour l'aide apportée,
Aïda



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !