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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告