|
|
|
|
salut,
Ca fait buguer ton pc, tu peux être plus précise ? Google is your friend |
oui , ça bouffe toute la mémoire , surement parce que ma fonction s'appelle indéfiniment , pourtant je fais bien décroite n ... |
n, ne décroît pas, il augment. Tu fais 2*(n-1)-1, c'est une fonction croissante.
Google is your friend |
ç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)))) |
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. Google is your friend |
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
|
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. Google is your friend |
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... |
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... |
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 Google is your friend |
ç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... |
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))) ) ) Google is your friend |
alors la fonction compile bien mais si je fais :
(somme-impairs 3) , ça me rend 3 |
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 Google is your friend |
merci infiniment fiddy ça marche , c'est super smpa :) , tu fais du scheme souvent ou pas ? |
Euh en fait, j'en ai jamais fait. Mais j'ai déjà fait du lisp, ça ressemble un peu ;)
Google is your friend |
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 , @+ ;) |
Pas de problème ;)
Google is your friend |
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
|
| 25/10 13h35 | Nombre premier | Langage C |
| 23/08 11h10 | Manipuler des entiers en 64 bits | Langage C |
| 15/04 00h41 | Conversion d'une adresse IP en entier sur 32 bits | Perl |
| 15/04 01h13 | Conversion d'un nombre entier 32 bits en IP | Perl |
| 27/06 23h41 | Hiérarchisation et Sommaire automatique | Word |
| 09/08 01h10 | [Pascal] Calcul somme entier binaire | 7 |
| 15/10 02h52 | Java: lire 2 entiers et effectue leur somme | 2 |
| 11/03 14h46 | Somme des chiffres d'un nombres entier : C | 4 |
![]() | PSP Video 9 - PSP Video 9 est un outil de conversion gratuit permettant de convertir des fichiers vidéo (avi, divx, mpeg, etc.) au formats... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | SyncBack - SyncBack est un logiciel de synchronisation de répertoires. Il peut être utilisé: pour effectuer des backups de fichiers... | Catégorie: Sauvegarde Licence: Freeware/gratuit |
![]() | MOREFUNC (Macro complémentaire EXCEL) - Morefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont... | Catégorie: Tableur Licence: Freeware/gratuit |
![]() | HTMLDOC - HTMLDOC est un outil permettant de convertir une page HTML (Hyper-Text Markup Language) vers un fichier HTML indexé, vers... | Catégorie: PDF Licence: Freeware/gratuit |
![]() | Zoombinis 2 - Mission | Catégorie: Jeu vidéo PC |