[C] Question tte conne sur une recursivité !

Question tte conne sur une recursivité ! [C] - C - Programmation

Marsh Posté le 22-01-2005 à 12:21:40    

Salut,
je suis en 2e année de Math-Info, et la je suis sur un exo qui me pose un peu problème. Dans le fond il ma parail tt simple, mais j'ai a chq fois une erreur :??:
 
Le but est ici de faire une fonction récursive donnant la factorielle d'un nombre et qui place le résultat en paramètre.
 
J'ai pour l'instant écrit ca :
 

Citation :


void Fact(int n,int *resultat)  
{  
     
    *resultat=*resultat*n;  
    n--;  
    Fact(n,*resultat);  
}    
 
 
main()
 
int *resultat=1;
 
...
...


 
Mais le compileur me donne à chq fois le msg suivant :
 

Citation :

[Warning] passing arg 2 of `Fact' makes pointer from integer without a cast


 
Qqun aurait une idée d'ou vient le prob SVP ? :(
 
 
Merci d'avance :)

Reply

Marsh Posté le 22-01-2005 à 12:21:40   

Reply

Marsh Posté le 22-01-2005 à 12:27:07    

Code :
  1. void Fact(int n,int *resultat) 
  2.    
  3.     *resultat=*resultat*n; 
  4.     n--; 
  5.     Fact(n,resultat); 
  6. }


Message édité par cricri_ le 22-01-2005 à 12:27:31
Reply

Marsh Posté le 22-01-2005 à 12:44:15    

Bourreau a écrit :


Citation :


void Fact(int n,int *resultat)  
{  
     
    *resultat=*resultat*n;  
    n--;  
    Fact(n,*resultat);
}    
 
 
main()
 
int *resultat=1;
 
...
...



La ligne en gras
 
tu es censé passer un pointeur sur un int à ta fonction Fact, et là tu lui passe un int (ce sur quoi pointe un pointeur sur un int)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 22-01-2005 à 12:46:51    

Je vous remercie bcp :)
 
Yavait encore une chtite erreur apres, mais C resolu, impec' :jap:


Message édité par Bourreau le 22-01-2005 à 12:47:16
Reply

Marsh Posté le 22-01-2005 à 13:35:04    

Bourreau a écrit :



main()
 
int *resultat=1;
 
...
...




En dehors de ce qui a été dit, ceci est très faux. On ne peut pas initialiser un pointeur avec un entier comme ça... D'autre part, c'est probablement une erreur de conception.
 
Tu voulais sans doute dire (par exemple)


void fact(...)
{
}
 
int main(void)
{
   int resultat = 1;
 
   fact (5, &resultat);
 
   return 0;
}


Message édité par Emmanuel Delahaye le 22-01-2005 à 13:36:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 22-01-2005 à 15:39:15    

de plus tu n'as aucune conditions de sortie de ta fonction :/


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 22-01-2005 à 16:42:28    

Emmanuel => oui je sais, le main CT juste perso pour penser à un truc ;)
 
kangol => je sais aussi, CT ecrit tel quel dans le sujet, CT pas pour un but précis :/
 
Merci qd meme :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed