Algorithme nombre de bits d'un nombre décimal
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:
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