Accueil > Forum > > > > recursivite
recursivite
dimanche 28 mars 2010 à 22:31:48 |
recursivite

dida87
|
bonjour,ya t'il qlq 'un qui pourrait m'expliquer le deroulement de ce programme recursive seulement la recursivite car j'ai un prb avec elle :
void combinaisons(int *ens,int *cmb,int n,int p,int i,int j){
if(i<p){int k;
for(k=j;k<n;++k){cmb[i]=ens[k];
combinaison(ens,cmb,n,p,i+1,k);}
else{afficher(combinaison,p);}}
int main(){int ens[]={1,5,6,7,8};
int combi[4];
combinaison(ens,combi,5,4,0,0);}
merci
|
|
lundi 29 mars 2010 à 11:14:14 |
Re : recursivite

tpoinsot
|
Bonjour,
il manque une accolade et tu écris combinaison avec et sans s. Est-ce la même fonction ?
Utilise les balises, c'est mieux pour te lire.
Si j'ai bien compris, afficher() sera appelé à chaque fin de la boucle du premier bloc, et combi[] contiendra progressivement toutes les valeurs de ens[] un peu comme un compteur de vitesse :
ens[0], ens[0], ens[0], ens[0],
ens[0], ens[0], ens[0], ens[1],
...
ens[0], ens[0], ens[1], ens[0],
ens[0], ens[0], ens[1], ens[1],
...
ens[5], ens[5], ens[5], ens[5],
combi[] est rempli avec que des 8 (dernière valeur de ens[]) avant d'appeller afficher(combinaison,p).
Là, combinaison, c'est quoi ? Ce doit plutôt être afficher(cmb, p)
Code C/C++ : void combinaisons(int *ens,int *cmb,int n,int p,int i,int j)
{
if(i<p) {
int k;
for(k=j;k<n;++k) {
cmb[i]=ens[k];
combinaison(ens,cmb,n,p,i+1,k);
}
} // MANQUE DANS TON CODE
else {
afficher(combinaison,p);
}
}
int main(){
int ens[]={1,5,6,7,8};
int combi[4];
combinaison(ens,combi,5,4,0,0);
}
|
|
lundi 29 mars 2010 à 22:27:35 |
Re : recursivite

dida87
|
bonjour,je me suis tromper dsl ,le voici le code mais j'ai pas compris le deroulement de la fct recursive:
#include <stdio.h>
#include <stdlib.h>
void afficher(int *p,int n){
int i;
for(i=0;i<n;++i)
printf("%d",p[i]);
printf("\n");
}
void combinaisons(int *ens, int *combinaison, int n, int p, int i, int j) {
if (i<p) {
int k;
for (k=j; k<n; k++) {
combinaison[i] = ens[k];
combinaisons(ens,combinaison,n,p,i+1,k);
}
}
else {
afficher(combinaison,p);
}
}
int main()
{
int ens[] = {5,9,3,4};
int combi[2];
combinaisons(ens,combi,4,2,0,0);
return 0;
}
merci,
est ce qu'il ya une fct recursive qui permet de generer toutes les combinaisons entres plusieurs tableau??en C
merci pr l'aide
|
|
mercredi 31 mars 2010 à 08:41:01 |
Re : recursivite

tpoinsot
|
Pour comprendre la récursion, reproduit la à la main, ligne par ligne, et essaie d'en voir le systèmatisme.
Un peu comme une suite Un = f(Un-1). Il faut un porte de sortie (convergence de la suite) sinon, ça tourne indéfiniment.
Dans ton cas la récursion est produite par l'appel
Code C/C++ : combinaisons(ens,combinaison,n,p,i+1,k);
qui augmente i, et la sortie de la récursion se fait sur afficher() quand i>=p
Soit alors :
Code C/C++ : if (i<p) {
...
combinaisons(ens,combinaison,n,p,i+1,k);
...
}
else {
afficher(combinaison,p);
}
Après afficher(), le programme revient après l'appel à combinaisons().
Maintenant, regarde la boucle :
k=0
Code C/C++ : cmb[0]=ens[0];
combinaison(ens,cmb,n,p,1,0);
rappel :
Code C/C++ : cmb[1]=ens[0];
combinaison(ens,cmb,n,p,2,0);
etc... jusqu'à p-1 : afficher().
Code C/C++ : cmb[p-1]=ens[0];
combinaison(ens,cmb,n,p,p,0);// provoque afficher()
A ce moment, tous les cmb[] contiennent ens[0].
et première sortie de combinaison() : i = p-1 et on passe à k=k+1 (donc 1)
Code C/C++ : cmb[p-1]=ens[1];
combinaison(ens,cmb,n,p,p,0);
tous les cmb[] contiennent ens[0], sauf le dernier qui contient ens[1].
etc...
Ta dernière question est différente. Je ne sais pas s'il y en a déjà, alors il faut la faire ou la trouver (google !)
|
|
dimanche 18 avril 2010 à 13:51:55 |
Re : liste

dida87
|
Bonjour,je voulais mettres toutes les combinaisons que j'ai trouver dans une strucure (liste ) en c ,pour faire ensuite combinaisons entre ces listes ,si vous avez une idee ,vraiment c'est urgent,Merci
|
|
Cette discussion est classée dans : int, combinaison, ens, cmb, recursivite
Répondre à ce message
Sujets en rapport avec ce message
Prob avec "!" [ par saturne_1606 ]
Bonjour a tous!Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si
Language C probleme de compilation [ par Keymi ]
Quand je compile ce programme j'obtient : 15 [Warning] return type of 'main' is not `int' . Je ne vois pas du tout comment corriger ou est l'erreur :s
Probleme pour une boucle en C++ [ par Liquid043 ]
De facon simple ce que j'essaie de faire c'est de générer 6 nombre aléatoire compris entre 1 et 49 tout en evitant que dans une série deux numéros se
combinaison / factorielle [ par sacredead ]
bonjour, j'aimerais écrire une équation comportant des combinaisons C(n,k). étant donné que je ne connais pas la syntaxe, j'aimerais passer par les fa
Envoyer un pointeur sur un tableau [ par xcxl ]
Bonjour, J'ai une question sur les pointeurs à vous poser (décidément les pointeurs y'a pas plus complexe...erreur de segmentation à chaque fois) J'
probleme avec une chaine de caractere [ par joben22 ]
Bonsoir, j'ai un petit soucis avec une fonction que j'essaie de coder. En fait, je lis le contenue d'un fichier, le place dans un char* et la j'aimer
Pointeur et type non défini [ par yvesyves ]
Hello, Voici mon code : [code=cpp] struct sommet { std::vector m_arr_som; //arretes du sommet (pointeur) int m_value;
probleme de selection dans opengl [ par oswa ]
bonjour, svp j'ai besoin d'un aide urgent. en effet, j'ai realiser un programme en c++ qui utilise opengl. ce programme permet de dessiner plusieurs
Caster un int dans un char (char * ?) [ par snoop44 ]
Bonjour a tous ! Voila mon petit soucis : Je souhaite "caster" un int pour l'écrire dans un char* avant de faire appel a une fonction qui requiert un
question programmation sous unix pour le fork [ par crazy222 ]
Bonjour tous le monde voila j'essai de finir un travail mais j'y arrive pas avec quelque lacune en programmation , mon bute c'est que le processus fil
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|