Haskell : Multiplication Russe

Exercices Corriges en Haskell :  Multiplication Russe

La technique de multiplication russe permet de calculer le produit de deux nombres entiers naturels en utilisant seulement des additions et de multiplications et divisions par 2. Cette technique est basée sur la propriété : xy=(x/2) 2y si x est pair

1. Écrivez une définition récursive de la multiplication en utilisant uniquement des additions et multiplications et divisions par 2.

2. Écrivez une fonction qui calcule le produit de deux entiers naturels en utilisant cette technique.

Haskell pandacodeur

Correction :

1-- Définition récursive de la multiplication en utilisant seulement des additions et des divisions par 2
multRusse :: Int -> Int -> Int
multRusse x y
    | x == 0 = 0
    | even x = multRusse (x `div` 2) (y * 2)
    | otherwise = y + multRusse (x `div` 2) (y * 2)

2-- Fonction qui calcule le produit de deux entiers naturels en utilisant la technique de multiplication russe
produit :: Int -> Int -> Int
produit x y = multRusse x y

La fonction multRusse permet de calculer la multiplication en utilisant uniquement des additions et des divisions par 2. Elle utilise la propriété xy=(x/2) 2y si x est pair. La fonction est définie de manière récursive en vérifiant si x est pair ou impair. Si x est pair, on divise x par 2 et on multiplie y par 2. Si x est impair, on ajoute y au résultat de la multiplication de (x-1) et (y*2).

La fonction produit utilise la fonction multRusse pour calculer le produit de deux entiers naturels en utilisant la technique de multiplication russe. Elle prend deux entiers naturels en entrée et retourne leur produit.

Si vous avez trouvé les exercices corrigés en Haskell de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam