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

  FORUM HardWare.fr
  Programmation

  Implementer une addition recursivement. en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Implementer une addition recursivement. en c++

n°60137
kilik
Posté le 18-09-2001 à 19:05:47  profilanswer
 

Voila mon problemem. Je dispose de 2 listes chainees representant 2 chiffres. Chaque noeud de la liste represente un digit. Par exemple 325 est une liste chainee de 3 elements ; 3-->2-->5
 
Il faut que j additionne ces 2 chiffres, digit par digit (+ la retenue). Le truc c est que la fonction addition doit etre implementee recursivement et je ne vois pas trop comment faire.
 
Merci a tous ceux qui m aideront
 :jap:

mood
Publicité
Posté le 18-09-2001 à 19:05:47  profilanswer
 

n°60138
gizmo
Posté le 18-09-2001 à 19:25:27  profilanswer
 

tu dispose de la longueur des chaines au départ? elles sont de longueurs différente l'une de l'autre ou identique?

n°60139
kilik
Posté le 18-09-2001 à 19:28:17  profilanswer
 

Oui la longueur des chaines peut etre connue au depart mais elles peuvent ne pas etre de meme taille.

 

[edtdd]--Message édité par KiLiK--[/edtdd]

n°60143
H4dd3R
Q2
Posté le 18-09-2001 à 19:36:19  profilanswer
 

325+57:
 
Ton opération addition fait 5+7=2 et retenue de 1
Tu extrais 32 et 5 que tu n´as pas encore utilisés..
Et tu relances ton même opérateur d´addtion pour 32+5+1
 
Le résultat de cette relance tu le colle a gauche de ton 2.. :)
 
C tordu mais c joli!! :) :)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°60146
gizmo
Posté le 18-09-2001 à 19:47:03  profilanswer
 

Bon alors si la longueur est connue dès le départ, c'est très con. tu parcours la chaine la plus longue récursivement jusqu'a te positionner au même endroit que la plus courte et ensuite, il ne te reste plus qu'a faire des additions en descendant et en ajoutant le reste.

n°60151
cedric80
Posté le 18-09-2001 à 20:00:22  profilanswer
 

int add(type *p1, type *p2, int lg1, int lg2)
{
  if(lg1 != lg2)
  {
    if(lg1 > lg2)
    {
      return (p1->val * 10^lg1 + add(p1->next,p2,lg1-1,lg2));
    }
    else ...
  }
  else
  {
    if(lg1 != 0)
    {
      return ((p1->val + p2->val) * 10^lg1 + add(p1->next,p2->next,lg1-1,lg2-1));    }
    else
    {
      return p1->val + p2->val;
    }
  }
}

n°60154
kilik
Posté le 18-09-2001 à 20:15:25  profilanswer
 

J'en demandais pas tant.
Merci beaucoup.
 :jap:

n°60158
kilik
Posté le 18-09-2001 à 20:24:17  profilanswer
 

Je dois faire pareil pour la multiplication et la puissance ^.
 
Si tu te sens d attake hesites pas  :D

n°60159
gizmo
Posté le 18-09-2001 à 20:25:52  profilanswer
 

t'apprendra rien du tout si tu ne fais pas tes projets toi-même, surtout pour les bases comme ici. :sarcastic:

n°60160
kilik
Posté le 18-09-2001 à 20:34:29  profilanswer
 

La puissance jai deja fait c juste pour voir une autre approche. La multiplication ca me saoule. Mais c vrai que c la solution de facilite, mais putain je suis trop a la bourre je my suis prit trop mal, jamaias je vais reussir a terminer.

mood
Publicité
Posté le 18-09-2001 à 20:34:29  profilanswer
 

n°60163
kilik
Posté le 18-09-2001 à 20:41:42  profilanswer
 

Remarque c bien fait pour ma guele, la prochaine fois je commencerais plus tot  :D  
 
Sinon merci de votre aide.

n°60166
barbarella
Posté le 18-09-2001 à 20:50:24  profilanswer
 

humm,
 
je m'interroge sur l'utilité de tels exercices :(. Bon courage KiLiK

n°60168
gizmo
Posté le 18-09-2001 à 20:58:16  profilanswer
 

barbarella a écrit a écrit :

humm,
 
je m'interroge sur l'utilité de tels exercices :(. Bon courage KiLiK  




 
l'approche récursive peut-être, mais c'est clair que ce n'est pas trépidant comme exercice.

n°60169
cedric80
Posté le 18-09-2001 à 20:58:23  profilanswer
 

L'utilité c'est d'apprendre à programmer! Ce sont des programmes simples à faire et qui t'exercent à la logique.

n°60176
barbarella
Posté le 18-09-2001 à 21:14:59  profilanswer
 

apprendre a programmer ?
 
oui en partie, mais il existe tellement d'exercices qui peuvent avoir une application dans le concret que je me demandais si celui-ci en avait une.
 
personnelement je donne plutot comme exercice sur les grands nombres. Karastuba en recursive c'est cool.
 
Je pense qu'on abuse sur l'importance non seulement de la récursivité mais aussi sur les listes chainées. Les connaitre c'est une chose, les mettre à toutes les sauces comme je le vois régulièrement c'en est une autre.
 
Mais aujourd'hui je me sens d'humeur espiègle,  alors ne prenez pas tout ce que je dis trop au sérieux ;)

 

[edtdd]--Message édité par barbarella--[/edtdd]

n°60227
flo850
moi je
Posté le 19-09-2001 à 01:22:53  profilanswer
 

pour la puissance pense a ce petit algo
a exp b:
si b est pair
    renvoyer a exp b * a exp b
sinon
    si b vaut 1
         renvoyer a
    sinon renvoyer a * a exp (b-1)
 
donc des que tu as la multiplication ca marche

n°60228
ayachi
Posté le 19-09-2001 à 01:32:39  profilanswer
 

désolé de te piquer le topic mais est-ce que qqun à l'algorithme récursif de fibonacci,
u(n)=u(n-1)+u(n-2)
pas l'évident mais celui qui évite de recalculer u(n-2) puisqu'il a été calculé dans u(n-1).

n°60231
ayachi
Posté le 19-09-2001 à 03:01:47  profilanswer
 

y'a bien cette méthode  
allocate array for memo;  
initialize memo[1] and memo[2] to 1;  
fib(n)  
{    
  if memo[n] is not zero, return memo[n];    
  memo[n] = fib(n-1) + fib(n-2);    
  return memo[n];  
}
 
mais je me rappelle d'une autre méthode en caml quand j'étais à la fac qui utilisais des paires pour stocker la variable interm. Mais impossible de retrouver cette méthode :cry:

n°60247
flo850
moi je
Posté le 19-09-2001 à 09:40:41  profilanswer
 

pour fibbo , il existe une methode de calculno recursive ( la demo est un peu longue )  
je me souvient plus exactement , mais il apparait le nombre d'or ( 1+racine(5))/2

n°60367
ayachi
Posté le 19-09-2001 à 16:00:21  profilanswer
 

flo850 a écrit a écrit :

pour fibbo , il existe une methode de calculno recursive ( la demo est un peu longue )  
je me souvient plus exactement , mais il apparait le nombre d'or ( 1+racine(5))/2  




 
F(n)= ( u^n - (-u)^n ) / sqrt(5), avec u = (1+sqrt(5)) / 2 et -u = (1 - sqrt(5)) / 2.
 
mais la formule était récursive avec caml, pour ceux qui on fait caml à la fac, si vous savez n'hésitez pas.


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

  Implementer une addition recursivement. en c++

 

Sujets relatifs
crer et implementer un fichier d'aide en VC++[javascript]comment faire une VRAIE addition? pas 5+1=51 ;-))
[Algo] lister les fichiers récursivement 
Plus de sujets relatifs à : Implementer une addition recursivement. en c++


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)