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))))))
广告