Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 n 정수의 GCD 공식을 인쇄하는 재귀 프로그램

<시간/>

입력으로 정수가 주어집니다. 목표는 재귀를 사용하여 n개 숫자의 GCD 공식을 출력하는 것입니다.

우리는 세 숫자의 GCD가 a1,b1 및 c1이 gcd(a1,gcd(b1,c1))가 될 것이라는 것을 알고 있습니다. 세 개 이상의 숫자에 대해 유사하게 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)에 대해 다시 재귀하고 이전 문자열을 추가합니다.

  • 입력된 번호를 가져옵니다.

  • 숫자의 개수를 입력으로 받아 num1 숫자에 대한 gcd 공식을 포함하는 문자열을 반환하는 함수 gcdFormula(int num1)

  • 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))))))