Bonjour
Comment puis-je programmer en Pascal une procédure récursive qui calcule la somme des chiffres d'un entier?
Merci
Version imprimable
Bonjour
Comment puis-je programmer en Pascal une procédure récursive qui calcule la somme des chiffres d'un entier?
Merci
Bonsoir,
:fleche: Principe : a + b = a + (b - 1) + 1.
--Code:
1
2
3
4
5
6
7
8
9 Somme(a, b : entier) : entier Début Si b = 0 alors Retourner a; Sinon Retourner 1 + Somme(a, b - 1); FinSi Fin
Wachter
Bonjour
Surtout qu'il faut faire la somme des chiffres d'un entier, il faut d'abord penser a extraire ces chiffres avant de les sommer entre eux :)
Avec cette fonction, extraction deux par deux et sommer avec une somme globale chaque somme.
Mais je crois que ce que demande l'énoncé est une fonction qui prend en paramètre l'entier et qui renvoie la somme des chiffres:P
Cordialement
Bonjour
Si on a bien compris ta fonction a savoir faire la somme de deux entiers en voyant ce que j'ai dit :
On comprendrait que quand je dis 'extraction deux par deux' que je dis par exemple si on a 123 comme tu dis l'extraction doit être 1 et 2 et ensuite 3 et 0 (a moins que ce j'ai dit n'était pas très clair :?) ou si on a 1234 ça serait plutôt 1 et 2 et 3 et 4.Citation:
Envoyé par krachik
D'accord avec toiCitation:
À mon avis, une fonction récursive est censée faire une seule chose, pas plus ! ;)
--
Wachter
La encore excuses moi de jouer sur les mots
je n'ai pas écrit une fonction récursive :) sachant qu'il y a extraction et calcul de somme, pour être plus claire une fonction qui prend un entier et retourne un autre entier(somme des chiffres de l'entier passé en paramètre) et c'est dans cette fonction qu'on calculera la somme des chiffres après extraction.Citation:
Envoyé par krachik
Cordialement
Bien que tu n'as pas écrit fonction récursive, je sous-entendais cela, sinon on sort complètement du sujet !
Bref, voici la version itérative de l'algorithme de résolution de cet exercice, et je laisse le soin au posteur du message d'écrire sa version récursive, quoique ce n'est pas toujours évident de passer de l'itératif vers le récursif :
--Code:
1
2
3
4
5
6
7
8
9
10
11 Lire (nombre); somme = 0; Tant que (nombre > 0) i = nombre % 10; somme = somme + i; nombre = nombre / 10; Fin Tant que Afficher(somme);
Wachter
Essaye:
a+ ;)Code:
1
2
3
4
5
6
7 function _SommeChiffres_(Const nbr :Integer) :Integer; begin if nbr>0 then _SommeChiffres_ := ( nbr mod 10 ) + _SommeChiffres_( nbr div 10 ) else _SommeChiffres_ := 0 end;