Recursivité
liljohn27
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un soucis, je suis entrain d'écrire un programme et j'aimerai afficher un entier récupéré au clavier de cette manière: pour par exemple l'entier 3288.
Afficher: 3
2
8
8
Avec une méthode récursive. Quelqu'un pourrait-il m'aider?
J'ai un soucis, je suis entrain d'écrire un programme et j'aimerai afficher un entier récupéré au clavier de cette manière: pour par exemple l'entier 3288.
Afficher: 3
2
8
8
Avec une méthode récursive. Quelqu'un pourrait-il m'aider?
4 réponses
Bonjour.
En quel langage fait-tu celà ?
Pour l'algo, ça ressemble à ça :
void affichierEntier (entier x)
{
-- si x != 0
-- {
----- afficherEntier( x / 10)
----- afficher( x mod 10)
--}
}
"L'homme qu'il faut, là où il ne faut pas, peut faire toute la différence" (Half Life² : G-Man)
En quel langage fait-tu celà ?
Pour l'algo, ça ressemble à ça :
void affichierEntier (entier x)
{
-- si x != 0
-- {
----- afficherEntier( x / 10)
----- afficher( x mod 10)
--}
}
"L'homme qu'il faut, là où il ne faut pas, peut faire toute la différence" (Half Life² : G-Man)
J'avais écrit une réponse dans cette file qui donnait un code en Python pour permettre de comprendre ce qu'est la récursivité, parce qu'en Python tout est plus simple.
Mais ça n'a pas dû plaire au modérateur , qui se planque sans rien dire, parce que mon post a été censuré.
C'est vraiment d'une nullité cette attitude.
Mais ça n'a pas dû plaire au modérateur , qui se planque sans rien dire, parce que mon post a été censuré.
C'est vraiment d'une nullité cette attitude.
"C'est vraiment d'une nullité cette attitude."
Perso je n'ai pas vu ton message, donc je ne sais pas trop pourquoi il a été censuré, mais si tu veux te plaindre va directement les voir au bureau... ici tu parles un peu dans le vide !
Perso je n'ai pas vu ton message, donc je ne sais pas trop pourquoi il a été censuré, mais si tu veux te plaindre va directement les voir au bureau... ici tu parles un peu dans le vide !
Bonsoir
Le message a été restauré...
https://forums.commentcamarche.net/forum/affich-26696104-recursivite#10
A l'avenir suivre les conseils donnés ci-dessus
Le message a été restauré...
https://forums.commentcamarche.net/forum/affich-26696104-recursivite#10
A l'avenir suivre les conseils donnés ci-dessus
En Python 2.7 (4 minutes à écrire):
Hormis le fait que le petit code ci-dessus permet de montrer à quel point le langage Java est grotesque,
il te permettra peut être aussi de sentir ce que signifie récursivité.
Comme l'a dit KX, la fonction aff() dans mon code est récursive parce qu'il y a un appel à elle-même dans son corps de définition.
def aff(x): if x: print x[0] aff(x[1:]) aff(raw_input(' Entrer un nombre : '))
Hormis le fait que le petit code ci-dessus permet de montrer à quel point le langage Java est grotesque,
il te permettra peut être aussi de sentir ce que signifie récursivité.
Comme l'a dit KX, la fonction aff() dans mon code est récursive parce qu'il y a un appel à elle-même dans son corps de définition.
"Hormis le fait que le petit code ci-dessus permet de montrer à quel point le langage Java est grotesque"
Je ne vois pas en quoi ton code montre que le Java est grotesque !
D'une part ton script ne répond pas vraiment à la question puisque tu fais une décomposition d'une chaîne de caractères au lieu de décomposer un entier en base (comme xefiry l'avait très bien fait dans son algo).
D'autre part, la solution Java à ce problème (celle que le prof de lijohn27 attend) n'est pas plus compliqué que celle que tu as proposé. Alors ne vient pas troller un Java vs. Python qui n'a aucun sens pour ce problème aussi simple (et inutile)...
Je ne vois pas en quoi ton code montre que le Java est grotesque !
D'une part ton script ne répond pas vraiment à la question puisque tu fais une décomposition d'une chaîne de caractères au lieu de décomposer un entier en base (comme xefiry l'avait très bien fait dans son algo).
D'autre part, la solution Java à ce problème (celle que le prof de lijohn27 attend) n'est pas plus compliqué que celle que tu as proposé. Alors ne vient pas troller un Java vs. Python qui n'a aucun sens pour ce problème aussi simple (et inutile)...
3
4
5
import java.util.*;
public class Recurs{
static String affiche(int n){
String entier;
entier = String.valueOf(n);
if(n < 10)
return entier;
else
for(int i = 0; i<entier.length(); i++)
entier = entier.substring(i);
return entier;
}
//Classe principale
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
System.out.println("Saisir un entier");
n = scanner.nextInt();
System.out.println(n);
}
}
De plus, vu que c'est une question de récursivité il faudrait que tu ais des appels récursifs quelque part, or ici tu n'en as aucun, tu utilises une boucles for (qui ne sers à rien) donc c'est itératif !
Donc tu dois avoir dans ta méthode affiche(n), un appel à cette même méthode affiche (si tu n'as pas cela alors ta méthode ne peut pas être considéré comme étant récursive)
Tu peux regarder pour cela l'algorithme de xefiry
J'ai écrit ceci ça ne fonctionne pas.
//Version récursive
static int affiche1(int n, int k){
if(k == 1)
return n;
else{
return affiche1(n / 10, k);
}
}
//Classe principale
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
System.out.println("Saisir un entier");
n = scanner.nextInt();
int k = 3;
System.out.println("Vous avez saisi");
affiche1(n, k);