Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cプログラムで再帰を使用したバイナリからグレイコード


2進数は、0と1の2ビットしかない数値です。

グレイコードは、コードの2つの連続した番号というプロパティを持つ特殊なタイプの2進数です。 1ビット以上異なることはできません。グレイコードのこのプロパティにより、より多くのKマップ、エラー訂正、通信などが役立ちます。

これにより、バイナリからグレイコードへの変換が必要になります。それでは、バイナリをグレイコードに変換するアルゴリズムを見てみましょう。 再帰を使用する

グレイコードcoの例を見てみましょう

Input : 1001
Output : 1101
アルゴリズム
Step 1 : Do with input n :
   Step 1.1 : if n = 0, gray = 0 ;
   Step 1.2 : if the last two bits are opposite,
      gray = 1 + 10*(go to step 1 passing n/10).
   Step 1.3 : if the last two bits are same,
      gray = 10*(go to step 1 passing n/10).
Step 2 : Print gray.
Step 3 : EXIT.

#include <iostream>
using namespace std;
int binaryGrayConversion(int n) {
   if (!n)
      return 0;
   int a = n % 10;
   int b = (n / 10) % 10;
   if ((a && !b) || (!a && b))
      return (1 + 10 * binaryGrayConversion(n / 10));
   return (10 * binaryGrayConversion(n / 10));
}
int main() {
   int binary_number = 100110001;
   cout<<"The binary number is "<<binary_number<<endl;
   cout<<"The gray code conversion is "<<binaryGrayConversion(binary_number);
   return 0;
}

出力

The binary number is 100110001
The gray code conversion is 110101001

  1. JavaScriptで再帰を使用した10進数から2進数への変換

    最初で唯一の引数として数値を受け取るJavaScript関数を作成する必要があります。関数は再帰を使用して、その数値の2進表記を表す文字列を作成する必要があります。 例- f(4) = '100' f(1000) = '1111101000' f(8) = '1000' 例 以下はコードです- const decimalToBinary = (num) => {    if(num >= 1) {       // If num is not divisible by 2 the

  2. Cアレイが回文であるか、再帰を使用していないかを確認するプログラム

    配列arr[n]が与えられ、nは配列のあるサイズである場合、タスクは、配列が回文であるか、再帰を使用していないことを確認することです。回文は、MADAM、NAMANなどのように、同じように前後に読み取ることができるシーケンスです。 したがって、配列が回文であるかどうかを確認するために、-のように配列を前後にトラバースできます。 再帰では、開始値と終了値を等しくなるまで変更する必要があります。または、開始値と終了値が等しくない場合は、終了して、指定された配列が回文ではないことをfalseに返します。 例 Input: arr[] = { 2, 3, 4, 3, 2} Output: Y