Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อค้นหาแฟกทอเรียล


แฟกทอเรียลของจำนวนเต็มที่ไม่เป็นลบ n คือผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับ n

ตัวอย่างเช่น แฟกทอเรียลของ 5 คือ 120

5! = 5 * 4 * 3 * 2 *1
5! = 120

แฟกทอเรียลของจำนวนเต็มสามารถพบได้โดยใช้โปรแกรมแบบเรียกซ้ำหรือโปรแกรมแบบไม่เรียกซ้ำ ตัวอย่างทั้งสองอย่างนี้มีดังต่อไปนี้

แฟกทอเรียลโดยใช้โปรแกรมแบบไม่เรียกซ้ำ

สำหรับลูปสามารถใช้เพื่อค้นหาแฟกทอเรียลของตัวเลข นี้แสดงให้เห็นโดยใช้โปรแกรมต่อไปนี้ -

ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
   int n = 5, fact = 1, i;
   for(i=1; i<=n; i++)
   fact = fact * i;
   cout<<"Factorial of "<<n<<" is "<<fact;
   return 0;
}

ผลลัพธ์

Factorial of 5 is 120

ในโปรแกรมข้างต้น for loop จะรันตั้งแต่ 1 ถึง n สำหรับการวนซ้ำแต่ละครั้ง ความจริงจะถูกคูณด้วย i ค่าสุดท้ายของข้อเท็จจริงคือผลคูณของตัวเลขทั้งหมดตั้งแต่ 1 ถึง n ซึ่งแสดงให้เห็นโดยใช้ข้อมูลโค้ดต่อไปนี้

for(i=1; i<=n; i++)
fact = fact * i;

แฟกทอเรียลโดยใช้โปรแกรมแบบเรียกซ้ำ

โปรแกรมต่อไปนี้สาธิตโปรแกรมแบบเรียกซ้ำเพื่อค้นหาแฟกทอเรียลของตัวเลข

ตัวอย่าง

#include <iostream>
using namespace std;
int fact(int n) {
   if ((n==0)||(n==1))
   return 1;
   else
   return n*fact(n-1);
}
int main() {
   int n = 5;
   cout<<"Factorial of "<<n<<" is "<<fact(n);
   return 0;
}

ผลลัพธ์

Factorial of 5 is 120

ในโปรแกรมข้างต้น ฟังก์ชัน fact() เป็นฟังก์ชันแบบเรียกซ้ำ ฟังก์ชัน main() เรียก fact() โดยใช้ตัวเลขที่ต้องการแฟกทอเรียล สิ่งนี้แสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้

cout<<"Factorial of "<<n<<" is "<<fact(n);

หากตัวเลขเป็น 0 หรือ 1 แล้ว fact() จะส่งกลับ 1 หากตัวเลขเป็นตัวเลขอื่น fact() จะเรียกตัวเองซ้ำด้วยค่า n-1

สิ่งนี้แสดงให้เห็นโดยใช้ข้อมูลโค้ดต่อไปนี้ -

int fact(int n) {
   if ((n==0)||(n==1))
   return 1;
   else
   return n*fact(n-1);
}