Somme en pascal - Delphi/Pascal - Programmation
Marsh Posté le 24-04-2005 à 14:37:36
en utilisant la notion de récursivité ?
Marsh Posté le 24-04-2005 à 14:41:33
je te remercie de ta réponse JagStang mais je pense avoir trouver,il faut faire non pas : S:=2+2*i;
mais S:=S+2*i;
pour que la somme S mise en mémoire soit recalculé avec celle du calcul précédent.
Marsh Posté le 24-04-2005 à 14:45:39
c'est bien sur possible, mais l'idée de récurence n'est pas illustrée dans ce cas.
Marsh Posté le 24-04-2005 à 22:17:59
bah je pense que l'idée de Jag stang c'est de faire qqch du style
Code :
|
Voilà avec la récursion
++
Dreameddeath
Marsh Posté le 26-04-2005 à 10:19:53
Faut savoir quand même que lors de chaque appel de fonction, ya tout un tas d'opérations faites par le processeur pour construire le cadre de cette fonction : allocation de RAM pour les variables locales, sauvegarde des registres, empilage d'une adresse de retour pour que le programme sache où reprendre en sortant de la fonction, retour à la fonction appelante... Beaucoup d'opérations qui ne sont pas directement utiles au calcul, surtout pour un calcul aussi simple que celui présenté dans cet exemple. De plus, plus on récurse et plus on consomme de mémoire. Tant qu'on récurse pas beaucoup ça va, on a quand même des machines rapides avec plein de RAM.
Personnellement, pour des raisons d'optimisation en vitesse et en mémoire (de sécurité même : je risque pas de me retrouver à court de RAM), j'évite autant que possible la récursivité. Mais quand yen a besoin, j'hésite pas non plus.
Marsh Posté le 24-04-2005 à 14:05:59
Bonjour à tous,
Voila j'ai un autre problème,j'aimerais réaliser une somme en turbo pascal correspondant un peu à une série numérique.(du type 2+4+6+8... en choissant le nombre de termes)
J'ai alors écrit une petite procédure simple :
Procedure somme (a:integer);
for i:=1 to 7 do
begin
S:=2+2*i;
end;
Je pensais ainsi réaliser la somme successive suivante :
2+2+4+6+8+10+12+14
mais le résultat que me donne pascal est 16,c'est à dire qu'il ne réalise pas la boucle,il fait directement 2+2*7.
Comment réalise-t-on alors une somme en pascal avec une récurence telle que je l'ai présenté?
Merci beaucoup de votre aide.