Maison  >  Article  >  développement back-end  >  Programme C++ pour convertir un nombre binaire en code Gray par récursivité

Programme C++ pour convertir un nombre binaire en code Gray par récursivité

PHPz
PHPzavant
2023-09-16 13:57:03602parcourir

Programme C++ pour convertir un nombre binaire en code Gray par récursivité

Le code gris ou code binaire réfléchi est un type particulier de représentation binaire de nombres dans lequel deux valeurs consécutives diffèrent sur un seul bit. Par exemple, les équivalents binaires de 1 et 2 sont 01 et 10, où deux bits changent. Mais dans le code Gray, 1 vaut 01, 2 vaut 11 et un seul bit change. Dans cet article, nous verrons comment convertir un nombre binaire donné en son équivalent en code Gray en utilisant la récursivité en C++.

Passez les nombres sous forme d'entiers décimaux

Dans le premier exemple, nous fournissons des nombres décimaux. Les nombres ne sont que 0 et 1, mais les nombres sont en décimal. Par exemple, si nous voulons passer 6 en entrée, nous passons 110 (cent dix en décimal), ce qui équivaut à 6 en binaire. Le programme renvoie la sortie de la même manière.

Algorithme

  • Définissez une fonction solve() qui prendra un nombre binaire
  • Si n est 0, alors
    • Retour 0
  • Si ça se termine
  • Last := le dernier chiffre de n
  • second_last = avant-dernier chiffre de n
  • Si le dernier chiffre et l'avant-dernier chiffre sont différents, alors
    • Entrez 1 et appelez solve (n coupe le dernier bit)
  • Sinon
    • Entrez 0 et appelez solve (n coupe le dernier bit)
  • Si ça se termine
  • La fonction solve() se termine

Exemple

#include <iostream>
using namespace std;

int solve( int n ) {
   if( n == 0 )
   return 0;
   int last = n % 10;
   int second_last = (n / 10) % 10;
   if( (last && !second_last) || (!last && second_last) ) {
      return (1 + 10 * solve( n / 10 ));
   }
   return (10 * solve( n / 10 ));
}

int main()
{
   cout << "Gray code for the number 2 (10) is: " << solve( 10 ) << endl;
   cout << "Gray code for the number 6 (110) is: " << solve( 110 ) << endl;
   cout << "Gray code for the number 13 (1101) is: " << solve( 1101 ) << endl;
   cout << "Gray code for the number 93 (1011101) is: " << solve( 1011101 ) << endl;
}

Sortie

Gray code for the number 2 (10) is: 11
Gray code for the number 6 (110) is: 101
Gray code for the number 13 (1101) is: 1011
Gray code for the number 93 (1011101) is: 1110011

Conclusion

Le code gris ou le code binaire réfléchi peut être trouvé en appliquant l'opération XOR sur des bits consécutifs. La même chose est obtenue en prenant les deux derniers chiffres du nombre donné et lorsqu'ils ne sont pas identiques, appelez la fonction de manière récursive et transmettez le numéro sauf le dernier chiffre, le résultat sera concaténé avec 1 sinon avec 0, etc. Et bientôt. Dans l'exemple, nous avons fourni l'entrée sous forme de nombre décimal entier et la sortie est également au format décimal entier. Le même problème peut être résolu en prenant une entrée de type chaîne qui peut être utilisée pour fournir une entrée plus grande si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer