در این مثال آموزشی کد محاسبه فاکتوریل یک عدد را با استفاده از حلقه تکرار (for) و همچنین به روش تابع بازگشتی در زبان برنامه نویسی ++C خواهید آموخت.
پیش از این که کدنویسی این برنامه را توضیح دهیم، بهتر است ابتدا با تعریف فاکتوریل آشنا شویم.
فاکتوریل عدد صحیح (integer) و مثبت n برابر است با 1*2*3*…n. در ادامه کد برنامه محاسبه فاکتوریل یک عدد را در زبان برنامه نویسی ++C و با استفاده از حلقه تکرار و تابع بازگشتی می بینید.
برای این که بتوانید این مثال را درست متوجه شوید، بهتر است با حلقه های تکرار در زبان برنامه نویسی ++C آشنا باشید.
به ازای هر عدد مثبت به نام n، فاکتوریل به صورت زیر محاسبه می شود.
factorial = 1*2*3...*n
فاکتوریل عدد منفی قابل محاسبه نیست و فاکتوریل 0 برابر 1 است.
در این روش، یک تابع جداگانه (factorial) برای محاسبه فاکتوریل تعریف می شود که در آن هر بار تابع خود را دوباره فراخوانی می کند و به همین دلیل به آن تابع بازگشتی می گویند؛ به خط 21 در کد زیر توجه کنید.
#include<iostream> using namespace std; int factorial(int n); int main() { int n; cout << "Enter a positive integer: "; cin >> n; cout << "Factorial of " << n << " = " << factorial(n); return 0; } int factorial(int n) { if(n > 1) return n * factorial(n - 1); else return 1; }
خروجی
Enter a positive integer: 12 Factorial of 12 = 479001600
#include <iostream> using namespace std; int main() { unsigned int n; unsigned long long factorial = 1; cout << "Enter a positive integer: "; cin >> n; for(int i = 1; i <=n; ++i) { factorial *= i; } cout << "Factorial of " << n << " = " << factorial; return 0; }
خروجی
Enter a positive integer: 12 Factorial of 12 = 479001600
در اینجا متغیر factorial از نوع unsigned long long
است.unsigned
به این دلیل که فاکتوریل یک عدد همیشه مثبت است و long long
به این دلیل که ممکن است فاکتوریل یک عدد، عدد بزرگی شود.