Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2843 connectés 

  FORUM HardWare.fr
  Programmation
  C

  petit probleme de recursivité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petit probleme de recursivité

n°712828
Dark-Jedi
Posté le 30-04-2004 à 15:01:26  profilanswer
 

// petite fonctin récursive.
void Timer(double i)
{
// affiche i.
  cout << i << endl;
 
// incrémente i.
 i++;
 
// si on n'appuie pas sur une touche alors il se rappelle.
 if (!kbhit())
  Timer(i);
}
 
 
int main()
{
// déclaration des variables.
 double i = 0;
 
// appel la fonction
 Timer(i);
 
 return 0;
}
 
 
le problème c'est qu'elle s'arrète toute seule avant que j'appuie sur une touche quand i = 11832 (je crois).
Si quelqu'un sais?

mood
Publicité
Posté le 30-04-2004 à 15:01:26  profilanswer
 

n°712830
Taz
bisounours-codeur
Posté le 30-04-2004 à 15:05:05  profilanswer
 

for(int i = 0; not kbhit(); ++i)
{
   Timer(i);
}

n°712845
Dark-Jedi
Posté le 30-04-2004 à 15:15:56  profilanswer
 

j'ai pas de compilo pour testé (je fais ca a l'arrache sur papier).Est-ce mieux?
 
void Timer(double i)
{  
  cout << i << endl;
  for(int i = 0; not kbhit(); ++i)
 {
    Timer(i);
 }
}
 
int main()
{
 double i = 0;
 
   Timer(i);
   
 return 0;
}


Message édité par Dark-Jedi le 30-04-2004 à 15:21:17
n°712872
Dark-Jedi
Posté le 30-04-2004 à 15:34:44  profilanswer
 

il faut que je fasse une interuption avec le timer (iRQ 08) pour que ma fonction soit prioritaire et donc aller le plus vite possible (au max 0.5ms).
 
si je fais une boucle, je ne pourrais pas faire une interruption pdt tout le temps de la boucle. il faut que je le fasse le minimum de temps mais beaucoup de fois.

n°712910
Taz
bisounours-codeur
Posté le 30-04-2004 à 15:53:07  profilanswer
 

t'as pas l'impression que y a 36 i dans ton paté ?

n°712946
Dark-Jedi
Posté le 30-04-2004 à 16:14:12  profilanswer
 

Si mais comment faire.

n°712957
Taz
bisounours-codeur
Posté le 30-04-2004 à 16:19:33  profilanswer
 

n'en a voir qu'un seul

n°712974
TotalRecal​l
Posté le 30-04-2004 à 16:38:33  profilanswer
 

alors CA c'est de la récursivité [:mlc] (et les commentaires sont pas mal non plsu :o)
euh :
- pourquoi utiliser la récursivité et pas une boucle ? (parce tu voulais essayer de voir ce qu'est la récursivité tu vas me dire :sarcastic:). ton probleme à 11000qqch c'est un dépassement de pile, à force d'empiler et dépiler cette pauvre fonction récursive...
 
int main(){
 for(int i = 0; !kbhit(); ++i)
{
   cout << i;
}
return 0; // taz patapé :d!
}
ça doit faire la même chose [:joce] (ou utilise un while(!kbhit) et i++ à l'intérieur)
 
Quoi qu'il en soit petit conseil : je me doute que tu débutes et que c'était juste pour ça un essai, mais quand tu peux éviter la récursivité : fais le. C'est certe un outil tres puissant mais utile que dans certains cas. Tout (ou presque) ce qui peut être fait récursivement peut l'être itérativement. Et la récursivité c'est lourd à gérer pour le systeme (empiler, dépiler...).
 
Et il me semble (mais pas sûr) que kbhit est définie dans conio, n'est pas portable, et ne fonctionne qu'avec peu de compilos...


---------------
Topic .Net - C# @ Prog
n°713003
darkoli
Le Petit Dinosaure Bleu
Posté le 30-04-2004 à 17:00:52  profilanswer
 

C'est pas du C à l'origine ? :D

n°713155
docwario
Alea jacta est
Posté le 30-04-2004 à 20:13:07  profilanswer
 

+1, on n utilise po la recursivité quand on sait qu on va faire des milliers d appel...

mood
Publicité
Posté le 30-04-2004 à 20:13:07  profilanswer
 

n°713156
bjone
Insert booze to continue
Posté le 30-04-2004 à 20:15:09  profilanswer
 

Dark-Jedi a écrit :

il faut que je fasse une interuption avec le timer (iRQ 08) pour que ma fonction soit prioritaire et donc aller le plus vite possible (au max 0.5ms).
 
si je fais une boucle, je ne pourrais pas faire une interruption pdt tout le temps de la boucle. il faut que je le fasse le minimum de temps mais beaucoup de fois.


 
:??:

n°713159
skelter
Posté le 30-04-2004 à 20:17:12  profilanswer
 

TotalRecall a écrit :


Et il me semble (mais pas sûr) que kbhit est définie dans conio, n'est pas portable, et ne fonctionne qu'avec peu de compilos...


 
conio c'est borland et c'est de la mouise, par contre j vois pas comment une fonction comme kbhit peu etre standard(pa la philosophie du c)
 
sinon pour faire du kbhit sous windaube, c'est win32 et rien d'autre, meme si on aime pas (ou que d'autres disent que c degeue), parce qe de tt facon on passera tj par l'api win32, le plus bas niveau de prog windows dont on connait absolument rien

n°713160
TotalRecal​l
Posté le 30-04-2004 à 20:17:14  profilanswer
 


moi aussi j'ai trouvé ça drôle :d.


---------------
Topic .Net - C# @ Prog
n°713161
TotalRecal​l
Posté le 30-04-2004 à 20:19:06  profilanswer
 

skelter a écrit :

conio c'est borland et c'est de la mouise, par contre j vois pas comment une fonction comme kbhit peu etre standard(pa la philosophie du c)
 
sinon pour faire du kbhit sous windaube, c'est win32 et rien d'autre, meme si on aime pas (ou que d'autres disent que c degeue), parce qe de tt facon on passera tj par l'api win32, le plus bas niveau de prog windows dont on connait absolument rien


je suis assez d'accord avec toi !
pour kbhit c'est bien ce qu'il me semblait, mais bon à son niveau il va faire avec... (comprend par là que y a de plus gros probleme à résoudre dans son code [:kunks])


---------------
Topic .Net - C# @ Prog
n°713224
DeusP
Posté le 30-04-2004 à 21:30:34  profilanswer
 

c net ya plus élégant pour faire un timer ^^ (surtout que celui la n'a aucun interet vu ke ca vitesse depend de la machine)
sinon pour le code c carement crade de mettre un cout dans un prog C pur :-( ensuite le passage par valeur sur une variable qui va etre modifé :-( et enfin une ptite question : c quoi le principe ou du moins l'interet du programme ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  petit probleme de recursivité

 

Sujets relatifs
probleme de declaration de variableProbleme d'utilisation des variables je crois (PHP + SVG)
[C] problème de pointeurAide pour un petit programme très simple !
Problème de socketsProblème avec mysqldb
Petit programme sous MapleProbleme d'affichage avec les structures.
Problème de focus[C++/STL] list et parcours avec un itérateur : problème
Plus de sujets relatifs à : petit probleme de recursivité


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR