Problème en Scheme
Magenti
Messages postés
22
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'ai des problèmes avec la récursivité en Scheme, vu qu'il n'y a pas de boucle for ou while....Je voudrais écrire cet algo :
Som=0;
pour i de 1 à n faire
Som=Som+i;
renvoyer Som;
Voilà ce que j'ai déjà écrit, mais ça ne marche pas :
(define (som n)
(let ((Som 0) (i 1))
(if (and (>= i 1) (<= i n))
(+ Som i))
(+ i 1)
(som (- n 1))
)
)
Merci de votre aide ! ^^
J'ai des problèmes avec la récursivité en Scheme, vu qu'il n'y a pas de boucle for ou while....Je voudrais écrire cet algo :
Som=0;
pour i de 1 à n faire
Som=Som+i;
renvoyer Som;
Voilà ce que j'ai déjà écrit, mais ça ne marche pas :
(define (som n)
(let ((Som 0) (i 1))
(if (and (>= i 1) (<= i n))
(+ Som i))
(+ i 1)
(som (- n 1))
)
)
Merci de votre aide ! ^^
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 bin - Guide
- Fichier epub - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Creer un fichier .bat - Guide
5 réponses
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
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....
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))
) )
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)))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question