ในบทความนี้ เราจะเข้าใจวิธีค้นหาแฟกทอเรียลของตัวเลขโดยใช้การเรียกซ้ำ แฟกทอเรียลของจำนวนเป็นผลคูณของตัวมันเองกับจำนวนที่ต่ำกว่าแต่ละตัว แฟกทอเรียลเป็นฟังก์ชันที่ใช้กับจำนวนธรรมชาติที่มากกว่าศูนย์ สัญลักษณ์ของฟังก์ชันแฟกทอเรียลคือเครื่องหมายอัศเจรีย์หลังตัวเลข เช่น 5!
ฟังก์ชันแบบเรียกซ้ำคือฟังก์ชันที่เรียกตัวเองหลายครั้งจนกระทั่งตรงตามเงื่อนไขที่กำหนด การเรียกซ้ำเป็นกระบวนการของการทำซ้ำรายการในลักษณะที่คล้ายคลึงกัน ในภาษาโปรแกรม หากโปรแกรมอนุญาตให้คุณเรียกใช้ฟังก์ชันภายในฟังก์ชันเดียวกันได้ จะเรียกว่าการเรียกใช้ฟังก์ชันแบบเรียกซ้ำ
ภาษาโปรแกรมหลายภาษาใช้การเรียกซ้ำโดยใช้สแต็ค โดยทั่วไป เมื่อใดก็ตามที่ฟังก์ชัน (ผู้โทร) เรียกใช้ฟังก์ชันอื่น (callee) หรือเรียกตัวเองว่าเป็นผู้รับสาย ฟังก์ชันผู้โทรจะโอนการควบคุมการดำเนินการไปยังผู้รับสาย ขั้นตอนการโอนนี้อาจเกี่ยวข้องกับข้อมูลบางส่วนที่ต้องส่งผ่านจากผู้โทรไปยังผู้รับสาย
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ป้อนข้อมูล
สมมติว่าข้อมูลที่เราป้อนคือ −
Enter the number : 7
ผลผลิต
ผลลัพธ์ที่ต้องการจะเป็น −
The factorial of 7 is 5040
อัลกอริทึม
Step 1 - START Step 2 - Declare an integer values namely ‘my_input’ and a long value namely ‘my_result’ Step 3 - Read the required values from the user/ define the values Step 4 - A recursive function ‘factorial’ is defined which takes an integer as input and returns the product of the input and its previous number until the input value is reduced to 1. Step 5 - The recursive function is called and the value ‘my_input’ is passed to it. Store the return value Step 6 - Display the result Step 7 - Stop
ตัวอย่างที่ 1
ที่นี่ ผู้ใช้ป้อนอินพุตตามข้อความแจ้ง คุณสามารถลองใช้ตัวอย่างนี้ในเครื่องมือกราวด์ของเรา .
import java.util.Scanner; public class Factorial { public static void main(String[] args) { int my_input ; long 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 number : "); my_input = my_scanner.nextInt(); my_result = factorial(my_input); System.out.println("The factorial of " + my_input + " is " + my_result); } public static long factorial(int my_input){ if (my_input >= 1) return my_input * factorial(my_input - 1); else return 1; } }
ผลลัพธ์
Required packages have been imported A reader object has been defined Enter the number : 7 The factorial of 7 is 5040
ตัวอย่างที่ 2
ในที่นี้ มีการกำหนดจำนวนเต็มก่อนหน้านี้ และเข้าถึงและแสดงค่าบนคอนโซล
public class Factorial { public static void main(String[] args) { int my_input ; long my_result; my_input = 7; System.out.println("The number is defined as " +my_input); my_result = factorial(my_input); System.out.println("The factorial of " + my_input + " is " + my_result); } public static long factorial(int my_input){ if (my_input >= 1) return my_input * factorial(my_input - 1); else return 1; } }
ผลลัพธ์
The number is defined as 7 The factorial of 7 is 5040