Bonjour à tous , je suis nouveau sur le forum et aussi debutant en programmation .
Ma vraie passion c'est la programmation C et particulierement sous Linux ( J'ai reussi à completement me passer de windows ^^ ) bref , en cours on fait de la programmation fonctionnelle avec Scheme , et j'avoue que je le trouve assez impressionant coté graphisme mais j'en en suis pas encore la .

J'ai un probleme avec un exercice de recursivité , celui du calcul du nombre de bits binaires qui constituent un decimal , l'algorithme qui m'est directement venu à l'esprit c'est la division par 2 ce qui donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
;;;nbits: ent > ent
;;;(nbits n) donne le nombre de bits significatifs dans l'ecriture en base 2 d'un entier naturel donné en base 10
(define (nbits n)
  (if (= n 0)
      0
      (+ 1 (nbits (quotient n 2)))
  )
)
(nbits 0) ;;; 0 (faux)
Le probleme c'est que si le parametre n=0 des le debut le resultat est erroné , or 0 est representé par 1 bit , je n'arrive pas à trouver la solution en sachant que je n'ai droit qu'à des fonctions primitives et que je dois utiliser la reccursion


Merci d'avance