Somme des entiers impairs
marina
-
lamiss -
lamiss -
Bonjour,
je dois écrire une fonction récursive qui calcule les entiers impairs , par exemple si n = 3 , je calcule 1+3+5 , les 3 premiers impairs . Je dois le faire en langage scheme . On remarque que 1+3+5 c'est :
2*n - 1 + 2*(n-1) -1 + 2*(n-2)-1
voici mon début de code :
(define (somme-impairs n)
(if (= n 0)
0
(somme-impairs (- (* 2 (- n 1)) 1))))
mais ça fait beuguer mon pc , quelqu'un pourrait il m'aider svp ?
merci beaucoup .
je dois écrire une fonction récursive qui calcule les entiers impairs , par exemple si n = 3 , je calcule 1+3+5 , les 3 premiers impairs . Je dois le faire en langage scheme . On remarque que 1+3+5 c'est :
2*n - 1 + 2*(n-1) -1 + 2*(n-2)-1
voici mon début de code :
(define (somme-impairs n)
(if (= n 0)
0
(somme-impairs (- (* 2 (- n 1)) 1))))
mais ça fait beuguer mon pc , quelqu'un pourrait il m'aider svp ?
merci beaucoup .
A voir également:
- Algorithme qui calcule la somme des nombres pairs
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Comment calculer la moyenne sur excel - Guide
- Code binaire des nombres - Guide
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Excel
23 réponses
oui , ça bouffe toute la mémoire , surement parce que ma fonction s'appelle indéfiniment , pourtant je fais bien décroite n ...
ça n'a pas de sens je crois ce que tu dis et ça se voit car mon programme marche pas :) :
(define (somme-impairs n)
(if (= n -1)
0
(somme-impairs (- (* 2 (- n 1)) 1))))
(define (somme-impairs n)
(if (= n -1)
0
(somme-impairs (- (* 2 (- n 1)) 1))))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui, en fait il y a un autre problème
n ne décroît pas. Par exemple tu prends n=5, tu relances ta fonction récursivement avec n=2*(5-1)-1=7, n augmente.
La fonction 2(n-1)-1 est croissante. Voilà pourquoi ton programme ne marche pas, cela doit produire un débordement de pile.
n ne décroît pas. Par exemple tu prends n=5, tu relances ta fonction récursivement avec n=2*(5-1)-1=7, n augmente.
La fonction 2(n-1)-1 est croissante. Voilà pourquoi ton programme ne marche pas, cela doit produire un débordement de pile.
mon schéma de base c'est ça : les 3 1ers entiers impairs , 1+3+5 , donc c'est :
2*3 - 1 + 2*2 -1 + 2*1 - 1
saurais tu comment le mettre en fonction récursive ? merci
2*3 - 1 + 2*2 -1 + 2*1 - 1
saurais tu comment le mettre en fonction récursive ? merci
Tu peux faire une récursivité ascendante avec deux paramètres.
Le premier paramètre sera n, et tu le décrémenteras de 1, et le deuxième sera l'addition, qui contiendra la somme des impairs.
Je te mets l'appel de la fonction (somme-impairs (- n 1) (+ addition (- (* (- n 1) 2) 1)))
Et ta condition d'arrêt sera maintenant n=0.
La somme sera alors contenue dans la variable addition.
Le premier paramètre sera n, et tu le décrémenteras de 1, et le deuxième sera l'addition, qui contiendra la somme des impairs.
Je te mets l'appel de la fonction (somme-impairs (- n 1) (+ addition (- (* (- n 1) 2) 1)))
Et ta condition d'arrêt sera maintenant n=0.
La somme sera alors contenue dans la variable addition.
malheuresement ça ne va pas car si je fais :
(define (somme-impairs n)
(if (= n 0)
-1
(somme-impairs (- n 1) ((- (* (- n 1) 2) 1)))))
et que je teste :
(somme-impairs 3)
. procedure application: expected procedure, given: 3 (no arguments)
en argument je devrais avoir une procédure et là comme je dois donner un entier en argument ça ne colle pas...
(define (somme-impairs n)
(if (= n 0)
-1
(somme-impairs (- n 1) ((- (* (- n 1) 2) 1)))))
et que je teste :
(somme-impairs 3)
. procedure application: expected procedure, given: 3 (no arguments)
en argument je devrais avoir une procédure et là comme je dois donner un entier en argument ça ne colle pas...
j'ai recodé mon programme :
(define (somme-impairs n)
(if (= n 0)
0
(+ (somme-impairs (- n 1)) (- (* (- n 1) 2) 1))))
mais là si je fais somme-impairs 3 , j'obtiens 3 et non 9...
(define (somme-impairs n)
(if (= n 0)
0
(+ (somme-impairs (- n 1)) (- (* (- n 1) 2) 1))))
mais là si je fais somme-impairs 3 , j'obtiens 3 et non 9...
C'est pas vraiment ce que je t'ai conseillé.
(define (somme-impairs n somme)
(if (= n 0)
somme
(somme-impairs (- n 1) (- (* (- n 1) 2) 1))
)
)
Et pour lancer le programme (somme-impairs 3 0) par exemple
J'espère que ça marchera
(define (somme-impairs n somme)
(if (= n 0)
somme
(somme-impairs (- n 1) (- (* (- n 1) 2) 1))
)
)
Et pour lancer le programme (somme-impairs 3 0) par exemple
J'espère que ça marchera
ça ne va pas car mon exercice exige qu'il y ait un seul argument dans ma fonction , je dois avoir :
(somme-impairs 3) = 9
je ne sais plus quoi faire...
(somme-impairs 3) = 9
je ne sais plus quoi faire...
Ok, je savais pas, dans ce cas, je te propose :
(define (somme-impairs n)
(if (= n 0)
0
(+ (- (* (- n 1) 2) 1) (somme-impairs (- n 1)))
)
)
(define (somme-impairs n)
(if (= n 0)
0
(+ (- (* (- n 1) 2) 1) (somme-impairs (- n 1)))
)
)
T'inquiète, on va réussir ;)
Normal, j'ai fait une tite boulette.
Remplace la ligne qu'il faut par :
(+ (- (* n 2) 1) (somme-impairs (- n 1)))
Là, ça devrait marcher lol
Normal, j'ai fait une tite boulette.
Remplace la ligne qu'il faut par :
(+ (- (* n 2) 1) (somme-impairs (- n 1)))
Là, ça devrait marcher lol
oui c'est dérivé du lisp , bon je continue mes petits exercices , merci bcp pour ton aide , je reviendrai surement poster pour l'algorithmique , car pour la syntaxe je me démerde , @+ ;)
bonjour je souhaiterais de l'aide svp j'arrive pa a repondre a 1 question d'un devoir niv 2nde:
pourquoi la somme de 3 nombres impairs consécutifs n'est jamais premier?
aidez moi svp je bloke sur 1 kestion ki a l'air assez simple
merci d'avance
pourquoi la somme de 3 nombres impairs consécutifs n'est jamais premier?
aidez moi svp je bloke sur 1 kestion ki a l'air assez simple
merci d'avance
Salut,
Avant de poser ton problème, tu dois te créer ton propre post ! De plus, tu dois regarder si tu es dans la bonne catégorie. Ici, il s'agit de programmation, je vois pas le rapport !
Sinon, pour répondre à ta question.
Soit n un entier naturel quelconque.
Alors 2n+1,2n+3,2n+5 sont trois entiers impairs consécutifs.
Combien fait leur somme ? Et enfin, par quoi peux-tu factoriser ?
Conclusion ?
Cordialement
Avant de poser ton problème, tu dois te créer ton propre post ! De plus, tu dois regarder si tu es dans la bonne catégorie. Ici, il s'agit de programmation, je vois pas le rapport !
Sinon, pour répondre à ta question.
Soit n un entier naturel quelconque.
Alors 2n+1,2n+3,2n+5 sont trois entiers impairs consécutifs.
Combien fait leur somme ? Et enfin, par quoi peux-tu factoriser ?
Conclusion ?
Cordialement