begin process at 2012 05 29 15:39:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

petit probleme demande aide


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

petit probleme demande aide

mardi 2 mai 2006 à 13:37:35 | petit probleme demande aide

espanish

bonjour a vous tous.

je suis entrain d'apprendre le c++ en solo c'est pas facile mais bon,j'aurai besoins d'aide sur deux questions ou je bute un peu merci e bien vouloir m'aider.


probleme:

int factorielle(int n )
{
  if( n== 1)
   return 1;
 else
   return (n * factorielle (n-1) );
}

mes deux question sont:

j'aimerais que l'on m'explique comment s'effectue le traitement de la factorielle de 5 à partir de la fonction précédente?


et aussi quel resultat vais-je obtenir?


merci de votre aide.
mardi 2 mai 2006 à 14:07:47 | Re : petit probleme demande aide

vecchio56

Administrateur CodeS-SourceS
Déja on remarque que ta fonction est fausse, car 0! devrait retourner 1, or ici je ne pense pas que ce soit le cas Le fonctionnement est très simple à comprendre, ca s'appelle de la récursivité (fonction qui s'appelle elle même). le résultat, ce sera 5*(4*(3*(2*1))), c'est a dire 120 Si tu comprends la définition mathématique de la factorielle, je pense que tu dois pas avoir de problème car c'est la même chose
mardi 2 mai 2006 à 14:14:17 | Re : petit probleme demande aide

ben92600


int factorielle(int n )
{
  if( n== 1)
   return 1;
 else
   return (n * factorielle (n-1) );
}

c est une fonction recurcive en gros  c est une fonction qui ce rappelle temp que des condition sont respecter
dans ce cas temp que n ! = 1 et tu peu mm te passe du else ce qui te fait gagner une ligne ;)

si tu prefere sa revient a faire :
int   factorielle (int n)
{
   int a = 1;
   
   while(n != 1)
    {
       a *= n;
       n--;
     }
  return (n);
}
mardi 2 mai 2006 à 14:26:43 | Re : petit probleme demande aide

espanish

donc pour repondre a mes question.

qui sont.

question:
j'aimerai que l'on m'explique comment s'effectue le traitement de la factorielle de 5 à partir de la fonction précédente?

reponse: avec se que vous m'avez dit je c'est pas trop comment ecrire la reponse

question n2:
quel resultat vais-je obtenir?

reponse:
5*(4*(3*(2*1)) ce qui est egale a 120



voila si j'ai bien compris mais pour la question 1 je sait pas trop comment procede pour expliquer desole de ne pas trop comprendre mais apprendre tous seule c'est dur.

pour la question 2 je pense avoir compris je vous remerci de votre aide rapide

mardi 2 mai 2006 à 14:29:29 | Re : petit probleme demande aide

vecchio56

Administrateur CodeS-SourceS
Si tu comprends ce qui se passe c'est pas compliqué d'expliquer. Tu obtiendra une bonne paraphrase du code source a mon avis (n ne vaut pas 1 donc on retourne 5 multiplié par le résultat de factorielle(4), ...)
mardi 2 mai 2006 à 15:08:03 | Re : petit probleme demande aide

espanish

on pourrait m'expliquez s'il vous plait juste a titre d'exemple si sa vous derenge juste pour bien comprendre sa serait gentil e votre part

juste repondre a la 1er question qui est:
expliquer comment s'effectue le traitement de la factorielle de 5 à partir de la fonction precedente?


voila s'il vous plait si vous pouvait repondre a cette question sa m'aiderai a mieux comprendre le tous

merci a vous de votre aide
mardi 2 mai 2006 à 21:51:09 | Re : petit probleme demande aide

dark_naruto25

Salut, je viens de voir ton post.
Pour bien programmer, il faut réfléchir. Et là tout ce que tu fais c'est nous bourré aux fesses pour qu'on te trouve des réponses à des questions. Enfin bref, j'admets que certaines personnes ont du mal.
Je vais donc te dire un principe du récursif. Le but d'une fonction récursive est de se rappelé elle même jusqu'à obtenir un problème simple.
Prenons comme exemple (un qui me viens facilement à la tête), l'opération factorielle :-D
Par exemple, 5! = 5 * 4 * 3 * 2 * 1 Le plus simple de se calcul est 2*1, voire 1 tout court !
Il faut donc que la fonction se rappel tant que son paramètre n'est pas 1. On a déjà la ligne :
if( n==1 ) retrun 1;
Sinon il faut donc réduit le problème.
On est tous OK pour dire que 5! = 5* 4!, ce qui est une opération simple puisque qu'il faut juste multiplié 5 par le factorielle (donc rappelé la fonction). On a donc la ligne :
else return n*factorielle( n-1 );

Ce qui après la trace de l'algo donne :
factorielle( 5 ) --> 5*factorielle( 4 )
factorielle( 4 ) --> 4*factorielle( 3 )
factorielle( 3 ) --> 3*factorielle( 2 )
factorielle( 2 ) --> 2*factorielle( 1 )
factorielle( 1 ) --> 1

Il suffit donc de reparcourir ces quelques lignes de bas en haut et ça donne :
1 * 2 * 3 * 4 * 5 = 120

Si après ça tu ne comprends toujours pas, je propose que tu retourne à l'école étudier, voire dans le cas extrême arreter la programmation.

mercredi 3 mai 2006 à 00:19:55 | Re : petit probleme demande aide

SAKingdom

Membre Club
Salut. Je remarque quelque chose

int factorielle(int n )
{
  if( n== 1)
   return 1;
 else
   return (n * factorielle (n-1) );
}

C'est normal ça? Je veux dire, c'est normal que sa fonction s'appelle elle-même?

___________________________________________
Les plus grands esprits trouvent toujours une solution

mercredi 3 mai 2006 à 00:22:06 | Re : petit probleme demande aide

vecchio56

Administrateur CodeS-SourceS
Bien sur que c'est normal, jamais entendu parler de récursivité?
mercredi 3 mai 2006 à 00:26:16 | Re : petit probleme demande aide

SAKingdom

Membre Club
Ah. Woups!!!!

___________________________________________
Les plus grands esprits trouvent toujours une solution



Cette discussion est classée dans : aide, int, probleme, demande, factorielle


Répondre à ce message

Sujets en rapport avec ce message

Hors programmation... [ par NitRic ] Seulement une petite suggestion: Il serait bien d'indiquer dans les message(demande d'aide) quel compilateur on utilise... Pourquoi je dit ca:Allez vo récursivité et factorielle!!! [ par cabarrus ] salut je veux écrire un programme qui calcule et renvoie le résultat factorielle en utilisant la récursivité de n'importe qu'elle nombre entier voici Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int port // : demande d'aide merci bcp [ par kilian ] bonjouren fait je souhaiterais faire un soft en C++ ( mais je n'y comprends rien en C++ ) ( je suis plus que débutant :( )mon projet c'est de commande un tableaux de permutation [ par sturnarbo ] /*Ecrire un programme qui range les éléments d'un tableau A du type int dansl'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et une vari sturnarbo [ par sturnarbo ] ENONCE:/*Ecrire un programme qui range les éléments d'un tableau A du type int dansl'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et u demande d'aide [ par siman ] bonjour!!je suis etudiante en licence EEA(Electronique Electrotechnique Automatisme)j'ai un projet d'info:faire un jeu de dames en langage c(joueur co type de variable? long int ? [ par dleewax ] salut! je suis nouveau dans le C++ et j'ai un petit problème... je suis en train de faire un petit programme permettant de calculer les factorielles.. allocation dynamique [ par hobbes ] Bonjour,Mon probleme est que je ne connais pas a l avance la taille du tableau que je souhaite cree. Je pensais alors :creer un tab de maniere dynamiq


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales