الفرق بين المراجعتين لصفحة: «Algorithms/factorial»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:مضروب العدد}}</noinclude> مضروب عدد صحيح غير سالب هو حاصل ضرب جميع الأعداد الصحيحة ال...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:مضروب العدد}}</noinclude> | <noinclude>{{DISPLAYTITLE:مضروب العدد}}</noinclude> | ||
مضروب عدد صحيح غير سالب هو حاصل ضرب جميع الأعداد الصحيحة التي تكون أصغر من العدد المعطى أو تساويه. فعلى سبيل المثال مضروب العدد <code>6</code> هو <code>6*5*4*3*2*1</code> وهو <code>720</code>. | مضروب عدد صحيح غير سالب هو حاصل ضرب جميع الأعداد الصحيحة التي تكون أصغر من العدد المعطى أو تساويه. فعلى سبيل المثال مضروب العدد <code>6</code> هو <code>6*5*4*3*2*1</code> وهو <code>720</code>. | ||
{{Course|course=cs}} | |||
__TOC__ | |||
== الطريقة التعاودية == | == الطريقة التعاودية == | ||
المراجعة الحالية بتاريخ 08:47، 23 يونيو 2022
مضروب عدد صحيح غير سالب هو حاصل ضرب جميع الأعداد الصحيحة التي تكون أصغر من العدد المعطى أو تساويه. فعلى سبيل المثال مضروب العدد 6
هو 6*5*4*3*2*1
وهو 720
.
دورة علوم الحاسوب
- 62 ساعة فيديو تدريبية
- من الصفر دون الحاجة لخبرة مسبقة
- شهادة معتمدة من أكاديمية حسوب
- متابعة أثناء الدورة من فريق مختص
الطريقة التعاودية
يمكن حساب مضروب عدد صحيح غير سالب باستخدام الصيغة التعاودية التالية:
n! = n * (n-1)!
n! = 1 if n = 0 or n = 1
تعرض الأمثلة التالية كيفية تنفيذ هذه الطريقة في عدد من لغات البرمجة:
- C++:
#include<iostream>
using namespace std;
unsigned int factorial(unsigned int n)
{
if (n == 0)
return 1;
return n * factorial(n - 1);
}
// اختبار الدالة السابقة
int main()
{
int num = 5;
cout << "Factorial of " << num << " is " << factorial(num) << endl;
return 0;
}
- بايثون:
def factorial(n):
if (n == 0):
return 1;
return n * factorial(n - 1)
# اختبار الدالة السابقة
num = 5;
print("Factorial of",num,"is",
factorial(num))
- جافا:
class Test
{
static int factorial(int n)
{
if (n == 0)
return 1;
return n*factorial(n-1);
}
// اختبار التابع السابق
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of "+ num + " is " + factorial(5));
}
}
تعطي الشيفرات السابقة المخرجات التالية:
Factorial of 5 is 120
الطريقة التكرارية
إن كان الرقم المراد حساب مضروبه كبيرًا، فيفضل استخدام الطريقة التكرارية، لأنّ الطريقة التعاودية ستستهلك في هذه الحالة مقدارًا كبيرًا من الذاكرة.
تعرض الأمثلة التالية كيفية تنفيذ الطريقة التكرارية في عدد من لغات البرمجة:
- C++:
#include<iostream>
using namespace std;
unsigned int factorial(unsigned int n)
{
int res = 1, i;
for (i = 2; i <= n; i++)
res *= i;
return res;
}
// اختبار الدالة السابقة
int main()
{
int num = 5;
cout << "Factorial of " << num << " is " << factorial(num) << endl;
return 0;
}
- بايثون:
def factorial(n):
res = 1
for in range (1, n + 1):
res = res * i
return res
# اختبار الدالة السابقة
num = 5;
print("Factorial of",num,"is",
factorial(num))
- جافا:
class Test
{
static int factorial(int n)
{
int res = 1, i;
for (i=2; i<=n; i++)
res *= i;
return res;
}
// اختبار التابع السابق
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of "+ num + " is " + factorial(5));
}
}
تعطي الشيفرات السابقة المخرجات التالية:
Factorial of 5 is 120
التعقيد الزمني
يبلغ التعقيد الزمني لهاتين الطريقيتين المقدار O(n)
.
مصادر
- صفحة Program for factorial of a number في توثيق الخوارزميات في موقع GeeksforGeeks.