Problème en Scheme
Fermé
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
-
12 nov. 2010 à 19:16
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 12 nov. 2010 à 20:57
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 12 nov. 2010 à 20:57
A voir également:
- Germain veut gérer les activités de son association avec une base de données. il a commencé à créer des tables dans un fichier, mais il n’est pas sûr du résultat. le fichier à télécharger contient uniquement le schéma de cette base de données. en l’état actuel, que peut-on en déduire ?
- Fichier rar - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Site de telechargement - Accueil - Outils
5 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2010 à 20:01
12 nov. 2010 à 20:01
Je pense que for, et while existent en Sheme, mais il est évident qu'un algorithme récursif n'a pas à les utiliser, surtout dans l'approche fonctionnelle du Lisp...
Dans ton algorithme, tu as déjà tout !
Il suffit de faire une fonction récursive qui prend en paramètre ton n et ta somme, et au fur et à mesure tu décrémentes n, en incrémentant la somme :
Dans ton algorithme, tu as déjà tout !
Som=0; pour i de 1 à n faire Som=Som+i; renvoyer Som;
Il suffit de faire une fonction récursive qui prend en paramètre ton n et ta somme, et au fur et à mesure tu décrémentes n, en incrémentant la somme :
Som(n,0) = Som(n-1,n) = ... = Som(0,n+n-1+...+1) = n+n+n-1+...+1
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
12 nov. 2010 à 20:25
12 nov. 2010 à 20:25
Merci mais mon problème, c'est pas la théorie. J'ai compris mais je sais pas l'écrire en Scheme :S Je pense ne pas en être loin avec la fonction que j'ai mis plus haut mais ça lui plait pas à DrScheme....
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2010 à 20:31
12 nov. 2010 à 20:31
De ce que j'ai vu, si, tu en es assez loin !
Je ne connais pas Scheme, mais voici en Common Lisp (ce qui est quasiment pareil)
Je ne connais pas Scheme, mais voici en Common Lisp (ce qui est quasiment pareil)
(defun somme (n s) (if (= n 0) s (somme (- n 1) (+ s n)) ) )
Arya Dröttningu
Messages postés
581
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
3 janvier 2019
157
12 nov. 2010 à 20:35
12 nov. 2010 à 20:35
un truc dans ce genre là à mon avis :
(define (som a n)
(let a 0)
(if (zero? n)
a
(som (+ a 1)(- n 1)))
(define (som a n)
(let a 0)
(if (zero? n)
a
(som (+ a 1)(- n 1)))
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2010 à 20:44
12 nov. 2010 à 20:44
Pour correspondre à mon algorithme, je pense que ton (+ a 1) doit plutôt être (+ a n)
Sinon, c'est peut-être une particularité du Scheme, mais je ne comprends pas (let a 0)
Sinon, c'est peut-être une particularité du Scheme, mais je ne comprends pas (let a 0)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
12 nov. 2010 à 20:36
12 nov. 2010 à 20:36
Merci, là ça marche...je comprends pas, faut que je voie tout ça....je réfléchis en C et là j'ai pas de problème ! L'ennui c'est que le Scheme, ça fonctionne pas pareil malheureusement....:(
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2010 à 20:38
12 nov. 2010 à 20:38
En C :
Je ne vois pas la différence !
int somme(int n, int s=0) { return (n==0) ? s : somme(n-1,s+n); }
Je ne vois pas la différence !
Arya Dröttningu
Messages postés
581
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
3 janvier 2019
157
12 nov. 2010 à 20:39
12 nov. 2010 à 20:39
à mon avis Magenti doit réfléchir en itératif
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
12 nov. 2010 à 20:45
12 nov. 2010 à 20:45
Merci pour votre aide !!!! ^^ Maintenant je suis sur les listes et j'ai encore des problèmes mdr XD
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2010 à 20:46
12 nov. 2010 à 20:46
Si tu réfléchis en itératif sur les listes, ça ne m'étonnes pas que tu ais des problèmes !
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
12 nov. 2010 à 20:50
12 nov. 2010 à 20:50
Alors comment je dois raisonner ? :S