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

C++でn個の整数のGCDの式を出力する再帰プログラム


入力として整数が与えられます。目標は、再帰を使用してn個の数値のGCDの式を出力することです。

3つの数値のGCDは、a1、b1およびc1がgcd(a1、gcd(b1、c1))になることを知っています。同様に、3つを超える数値の場合、gcdはgcd(a1、gcd(b1、 gcd(c1…..、gcd(y1、z1))。

入力 −数値=4;

出力 −式は次のとおりです:

GCD(int a3、GCD(int a2、GCD(int a1、int b1)))

入力 −数値=6;

出力 −式は次のとおりです。GCD(int a5、GCD(int a4、GCD(int a3、GCD(int a2、GCD(int a1、int b1)))))

以下のプログラムで使用されているアプローチは次のとおりです

このアプローチでは、再帰関数gcdFormula(int num1)を使用しています。この関数は、数値のカウントを入力として受け取り、num1の数値のgcdの式を含む文字列を返します。

基本ケースの場合-:num1が1の場合、文字列 "int b" + to_string(num1)+""を返します。

Else-:gcdFormula(num1-1)を再度繰り返し、前の文字列を追加します。

  • 入力番号Numを取ります。

  • 関数gcdFormula(int num1)は、入力として数値のカウントを受け取り、num1の数値のgcdの式を含む文字列を返します

  • num1が1の場合、文字列 "int b" + to_string(num1)+""を返します。

  • それ以外の場合は、 "GCD(int a" <

  • returnとして再帰ステップが続きます(gcdFormula(num1-1)+ ")")

  • 最後に、文字列全体が返されます。

  • メイン内で得られた結果を印刷します。

#include <bits/stdc++.h>
using namespace std;
string gcdFormula(int num1){
   if (num1 == 1){
      return ("int b"+to_string(num1)+"");
   }
   else{
      cout<<"GCD(int a"<<num1-1<<", ";
      return (gcdFormula(num1 - 1)+")");
   }
}
int main(){
   int Num = 6;
   cout<<"Formula is :"<<endl;
   cout<<gcdFormula(Num);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Formula is :
GCD(int a6, GCD(int a5, GCD(int a4, GCD(int a3, GCD(int a2, GCD(int a1, int b1))))))

  1. 配列要素の乗算のためのC++プログラム

    整数要素の配列で与えられ、タスクは配列の要素を乗算して表示することです。 例 Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 以下のプログラムで使用されるアプローチは次のとおりです − 一時変数を初期化して、最終結果を1で格納します ループを0からnまで開始します。nは配列のサイズです 最終結果を得るには、tempの値にarr[i]を掛け続

  2. C++での8進数から10進数への変換のプログラム

    入力として8進数を指定すると、タスクは指定された8進数を10進数に変換することです。 コンピューターの10進数は10進数で表され、8進数は0から7までの8進数で表されますが、10進数は0から9までの任意の数字にすることができます。 8進数を10進数に変換するには、次の手順に従います- 余りから右から左に数字を抽出し、それを0から始まる累乗で乗算し、(桁数)–1まで1ずつ増やします。 8進数から2進数に変換する必要があるため、8進数の基数は8であるため、累乗の基数は8になります。 指定された入力の桁にベースとパワーを掛けて、結果を保存します 乗算されたすべての値を加算して、10進数になる