เราได้รับจำนวนเต็มเป็นอินพุต เป้าหมายคือการพิมพ์สูตร GCD ของตัวเลข n โดยใช้การเรียกซ้ำ
เรารู้ว่า GCD ของตัวเลขสามตัวบอกว่า a1,b1 และ c1 จะเป็น gcd(a1,gcd(b1,c1)) ในทำนองเดียวกันสำหรับตัวเลขมากกว่าสามตัว gcd สามารถรับได้โดยสูตรเป็น 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) ซึ่งนับจำนวนตัวเลขเป็นอินพุตและส่งกลับสตริงที่มีสูตรของ gcd สำหรับตัวเลข num1
สำหรับกรณีพื้นฐาน-:ถ้า num1 เป็น 1 สตริงส่งคืน "int b"+to_string(num1)+""
Else-:เรียกซ้ำอีกครั้งสำหรับ gcdFormula(num1-1) และต่อท้ายสตริงก่อนหน้า
-
นำตัวเลขที่ใส่มา
-
ฟังก์ชัน gcdFormula(int num1) ซึ่งนับจำนวนตัวเลขเป็นอินพุตและส่งกลับสตริงที่มีสูตรของ gcd สำหรับตัวเลข num1
-
หาก num1 เป็น 1 ให้ส่งคืนสตริง "int b"+to_string(num1)+""
-
อย่างอื่นพิมพ์ "GCD(int a"<
-
ตามด้วยขั้นตอนการเรียกซ้ำเป็นการส่งคืน (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))))))