C++遞迴程式,用於列印n個整數最大公約數的公式


給定一個整數作為輸入。目標是使用遞迴列印n個數的最大公約數的公式。

我們知道,三個數a1、b1和c1的最大公約數將是gcd(a1,gcd(b1,c1))。類似地,對於三個以上的數,最大公約數可以透過公式gcd(a1,gcd(b1,gcd(c1…..,gcd(y1,z1)))獲得。

示例

輸入 - Num = 4;

輸出 - 公式是

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

輸入 - Num = 6;

輸出 - 公式是:GCD(int a5, GCD(int a4, GCD(int a3, GCD(int a2, GCD(int a1, int b1)))))

下面程式中使用的方法如下

在這種方法中,我們使用遞迴函式gcdFormula(int num1),它將數字計數作為輸入,並返回包含num1個數的最大公約數公式的字串。

對於基本情況:如果num1為1,則返回字串"int b"+to_string(num1)+""。

否則:再次遞迴呼叫gcdFormula(num1-1)並追加之前的字串。

  • 輸入數字Num。

  • 函式gcdFormula(int num1) 將數字計數作為輸入,並返回包含num1個數的最大公約數公式的字串

  • 如果num1為1,則返回字串"int b"+to_string(num1)+""。

  • 否則列印 "GCD(int a"<<num1-1<<", ";

  • 然後是遞迴步驟,返回 (gcdFormula(num1 - 1)+")")

  • 最後將返回整個字串。

  • 在main函式內部列印結果。

示例

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

更新於:2021年11月2日

168 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.