Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ untuk menukar nombor binari kepada kod Kelabu menggunakan rekursi

Program C++ untuk menukar nombor binari kepada kod Kelabu menggunakan rekursi

PHPz
PHPzke hadapan
2023-09-16 13:57:03599semak imbas

Program C++ untuk menukar nombor binari kepada kod Kelabu menggunakan rekursi

Kod kelabu atau kod binari yang dicerminkan ialah sejenis perwakilan perduaan nombor yang istimewa di mana dua nilai berturut-turut berbeza hanya dalam satu bit. Sebagai contoh, persamaan binari 1 dan 2 ialah 01 dan 10, di mana dua bit berubah. Tetapi dalam kod Kelabu, 1 ialah 01, 2 ialah 11, dan hanya satu bit yang berubah. Dalam artikel ini, kita akan melihat cara menukar nombor binari yang diberikan kepada kod Kelabu yang setara menggunakan rekursi dalam C++.

Lulus nombor sebagai integer perpuluhan

Dalam contoh pertama kami menyediakan nombor perpuluhan. Nombornya hanya 0 dan 1, tetapi nombornya dalam perpuluhan. Sebagai contoh, jika kita ingin lulus 6 sebagai input, kita lulus 110 (seratus sepuluh dalam perpuluhan), yang bersamaan dengan 6 dalam binari. Program ini mengembalikan output dengan cara yang sama.

Algoritma

  • Tentukan fungsi solve() yang akan mengambil nombor binari
  • Jika n ialah 0, maka
    • Pulangan 0
  • Jika ia berakhir
  • Terakhir := digit terakhir n
  • second_last = kedua hingga digit terakhir n
  • Jika digit terakhir dan digit terakhir adalah berbeza, maka
    • Masukkan 1 dan panggil solve(n potongan terakhir)
  • Jika tidak
    • Masukkan 0 dan panggil solve(n potong bit terakhir)
  • Jika ia berakhir
  • fungsi solve() tamat

Contoh

#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;
}

Output

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

Kesimpulan

Kod kelabu atau kod binari yang dicerminkan boleh didapati dengan menggunakan operasi XOR pada bit berturut-turut. Perkara yang sama dicapai dengan mengambil dua digit terakhir nombor yang diberikan dan apabila mereka tidak sama, panggil fungsi secara rekursif dan lulus nombor kecuali digit terakhir, hasilnya akan digabungkan dengan 1 lain dengan 0, dsb. Dan seterusnya. Dalam contoh, kami telah menyediakan input sebagai nombor perpuluhan integer dan output juga dalam format perpuluhan integer. Masalah yang sama boleh diselesaikan dengan mengambil input jenis rentetan yang boleh digunakan untuk memberikan input yang lebih besar apabila diperlukan.

Atas ialah kandungan terperinci Program C++ untuk menukar nombor binari kepada kod Kelabu menggunakan rekursi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam