ในบทความนี้ เราจะมาทำความเข้าใจวิธีค้นหา G.C.D โดยใช้การเรียกซ้ำ ฟังก์ชันแบบเรียกซ้ำคือฟังก์ชันที่เรียกตัวเองหลายครั้งจนกระทั่งตรงตามเงื่อนไขที่กำหนด ตัวหารร่วมที่ยิ่งใหญ่ที่สุด (GCD) ของตัวเลขสองตัวคือจำนวนที่มากที่สุดที่หารทั้งสองตัว
การเรียกซ้ำเป็นกระบวนการของการทำซ้ำรายการในลักษณะที่คล้ายคลึงกัน ในภาษาโปรแกรม หากโปรแกรมอนุญาตให้คุณเรียกใช้ฟังก์ชันภายในฟังก์ชันเดียวกันได้ จะเรียกว่าการเรียกใช้ฟังก์ชันแบบเรียกซ้ำ
ภาษาโปรแกรมหลายภาษาใช้การเรียกซ้ำโดยใช้สแต็ค โดยทั่วไป เมื่อใดก็ตามที่ฟังก์ชัน (ผู้โทร) เรียกใช้ฟังก์ชันอื่น (callee) หรือเรียกตัวเองว่าเป็นผู้รับสาย ฟังก์ชันผู้โทรจะโอนการควบคุมการดำเนินการไปยังผู้รับสาย ขั้นตอนการโอนนี้อาจเกี่ยวข้องกับข้อมูลบางส่วนที่ต้องส่งผ่านจากผู้โทรไปยังผู้รับสาย
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ป้อนข้อมูล
สมมติว่าข้อมูลที่เราป้อนคือ −
Enter two numbers: 24 and 36
ผลผลิต
ผลลัพธ์ที่ต้องการจะเป็น −
The G.C.D of 24 and 36 is 12.
อัลกอริทึม
Step 1 - START Step 2 - Declare three values namely my_input_1, my_input_2 and my_result Step 3 - Read the required values from the user/ define the values Step 4 - A recursive function ‘CommonFactor’ is defined which takes two integers as input and returns two values i.e ‘my_input_2’ value and ‘my_input_1’ % ‘my_input_2’ value. Step 5 - The function is called recursively until the value of ‘my_input_2’ is greater than 0. Store the result. Step 6 - Display the result Step 7 - Stop
ตัวอย่างที่ 1
ที่นี่ ผู้ใช้ป้อนอินพุตตามข้อความแจ้ง คุณสามารถลองใช้ตัวอย่างนี้ในเครื่องมือกราวด์ของเรา .
import java.util.Scanner; public class GCD { public static void main(String[] args) { int my_input_1, my_input_2, my_result; System.out.println("Required packages have been imported"); Scanner my_scanner = new Scanner(System.in); System.out.println("A reader object has been defined "); System.out.print("Enter the first number : "); my_input_1 = my_scanner.nextInt(); System.out.print("Enter the second number : "); my_input_2 = my_scanner.nextInt(); my_result = CommonFactor(my_input_1, my_input_2); System.out.printf("The G.C.D of %d and %d is %d.", my_input_1, my_input_2, my_result); } public static int CommonFactor(int my_input_1, int my_input_2){ if (my_input_2 != 0) return CommonFactor(my_input_2, my_input_1 % my_input_2); else return my_input_1; } }
ผลลัพธ์
Required packages have been imported A reader object has been defined Enter the first number : 24 Enter the second number : 36 The G.C.D of 24 and 36 is 12.
ตัวอย่างที่ 2
ในที่นี้ มีการกำหนดจำนวนเต็มก่อนหน้านี้ และเข้าถึงและแสดงค่าบนคอนโซล
public class GCD { public static void main(String[] args) { int my_input_1, my_input_2, my_result; my_input_1 = 24; my_input_2 = 36; System.out.println("The numbers are defined as " +my_input_1 +" and " +my_input_2); my_result = CommonFactor(my_input_1, my_input_2); System.out.printf("The G.C.D of %d and %d is %d.", my_input_1, my_input_2, my_result); } public static int CommonFactor(int my_input_1, int my_input_2){ if (my_input_2 != 0) return CommonFactor(my_input_2, my_input_1 % my_input_2); else return my_input_1; } }
ผลลัพธ์
The numbers is defined as 24 and 36 The G.C.D of 24 and 36 is 12.