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
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)
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).
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é"
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
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 :