Minuscule fonction récursive en scheme

Fermé
-
 cmin -
Bonjour,

j'ai écrit une fonction qui calcule la somme des entiers entre m et n inclus , en scheme , la voici :

(define (somme-entiers-m-n m n)
(if (and (> m 0) (> n 0))
(if (<= m n)
(+ n (somme-entiers-m-n m (- n 1)))
"erreur")
0)
)

Il y a quelque chose que je comprends pas , si j'exécute la fonction pour les valeurs :

> (somme-entiers-m-n 1 3)
6

tout marche bien , mais si je fais :

(somme-entiers-m-n 3 8)
. +: expects type <number> as 2nd argument, given: "erreur"; other arguments were: 3

Ca n'a pas de sens car j'ai aucun probleme de parenthèse et la récursivité m'a l'air bonne , quelqu'un a une idée du probleme ?

merci

2 réponses

personne ne sait ? :-(
Coucou Marina !

Non la récursivité n'est pas bonne. Un des appels "(somme-entiers-m-n m (- n 1))" retourne " "erreur" ". Et on ne peut pas additionner un entier m et la chaîne "erreur". Il y a une erreur de typage.

Bonne journée !