بسط لى ال factorials لاكتب برنامج بسيط صغير ليقوم بالعملية

مرحبا ,

انا ادرس البرمجة كدراسة ذاتية , لدى مهمة صغيرة لانشاء برنامج صغير جدا وبسيط عن طريق طرفية الحاسوب , بواسطة لغة c

البرنامج مهمته ان يقوم بالامور الخاصة بالfactorials

ولكن انا لا اعرف ما هو ال factorials ولم افهم اى شئ من المقالات ,

فهل تساعدني على فهم ما هذا الجزء من الرياضيات كى اكتب برنامجى البسيط ؟

ساشارك اكواد البرنامج البسيطة والبدائية هنا , رغم ان المجتمع خاص بالرياضيات ولكن الاكواد ايضا خاصة بالرياضيات ,

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مجهول
  • حذف بواسطة المستخدم

بهذه البساطة ؟

كنت ساستخدم loop حتى يسل الى الصفر وكنت ساستخدم ال if ايضا وبعض متغيرات هههه

ولكن يبقي السؤال انني لم افهم الفكرة بعد

لا من الصورة الموجودة ولا من البرنامج

ما الغرض من هذا الجزء من الرياضيات ؟ او الفكرة الاساسية له ؟

هذه الفكرة تستخدم بكثرة في علم الاحتمالات .

مثلا سؤال ان كان لديك قطعة نقود و قمت برميها 10 مرات ما هي احتمالية أن تحصل على 4 مرات جهة الرأس مثل هذا السؤال يحتاج الى factorial لحله و الكثير غيرها في علم الاحتمالات

@Anakata

هل هناك علاقة تمكنك من حساب 5! دون الإعماد على الألة الحاسبة مثلا الجمع لدينا قاعدة n(n+1)/2

10=10(10+1)/2 = (100+10)/2=55

عبد الرحمن أحمد أضف ردا

أظن أن هدف المهمة غايتها استخدام مفهوم العودية أو التعاودية أو الاستدعاء الذاتي Recursion للدالة

لأن عملية حساب العاملي لأي عدد يعتبر أكثر مثال متداول لتطبيق العودية حيث أن عاملي أي عدد هو العدد مضروب بعاملي ما قبله وهكذا لو حللت كل جزء بنفس الطريقة ستصل إلى الواحد

  • بالطبع هو السؤال الأكثر تداولاً في شرح مبدأ الإستدعاء الذاتي وأذكر أن سؤلاً في أحد الإختبارات وكان بالصيغة التالية:

أكتب كود لإيجاد مضروب عدد ما بأربع طرق مختلفة.

كانت اللغة التي ندرسها حينها هي لغة C فكان حلي لها عبر استخدام حلقة for وحل عبر استخدام Goto ومفهوم الإستدعاء الذاتي والرابع استخدمت الحلقات عبر حلقة while غير منهية مع شرط خروج من الحلقة، ولكن جميع الحلول الأخرى غير الإستدعاء الذاتي تُعتبر فكرة واحدة وهي حلقة دوران بطرق مختلفة.

انا لم ادرك ما معنى الاستدعاء الذاتى هنا ؟

اهى شئ فى لغة ال c ما هى مفهومها ؟

هل لم ادرسها ام درستها ولكن المصطلح غريب بالعربية ؟

عبد الرحمن أحمد أضف ردا

الاستدعاء الذاتي: هو مفهوم برمجي يمكن تطبيقه بأي لغة، أي أن يتم استدعاء الدالة من داخل الدالة نفسها ولكن ببارمترات جديدة، ويشترط حتى لا يصبح الاستدعاء لا نهائي وأن لا يمتلئ المكدس ويحدث استثناء، يشترط وجود شرط الرجوع العكسي لضمان تحديد عدد الاستدعاءات المتداخلة، وفي مثالك شرط العودة هو الوصول إلى الاستدعاء مع البارمتر 0 حيث نتيجته هي 1 ومن ثم يبدأ بضرب النتيجة ويعيد الناتج كنتيجة من الاستدعاء الذي سبقه وهكذا رجوعا إلى أول استدعاء والذي يعطي النتيجة النهائية.

الاستدعء الذاتي يمكن تطبيقه على الكثير من الأمور، كمثال زيارة مصفوفة شجرية، بحيث يمكن اعتبار كل عقدة هي جذر لشجرة أصغر وهكذا وصولا إلى أدنى عنصر في الشجرة عندما يكون وحيدا ليس له أبناء حينها يبدأ العودة.

كذلك يمكن اعتبار مجموع مصفوفة أعداد هو العنصر الأول + مجموع المصفوفة بدون العنصر وهكذا مع التمرير الذاتي التعاودي يتم تمرير المصفوفة بعدد أقل في كل مرة وصولا لتمرير مصفوفة بعنصر وحيد حينها يكون العدد هو نفسه المجموع وهنا تكون نقطة العودة فأخذ النتيجة ويجمعها للخانة التي قبلها ثم يعيد الناتج وهكذا رجوعا إلى أول استدعاء مع نتيجة المجموع الكلي.

أمير التركى أضف ردا

لماذا لم ارى هذا المفهوم فى الكورسات الخاصة بلغة c مثلا ؟

ام ان هذا المفهوم متقدم جدا جدا , لدرجة ان يكون له كورس مثلا لوحده ؟

هل يمكن مثال , مع اسم هذا المفهوم باللغة الانجليزية ؟ كي ابحث اكثر فيه

ان يدخل شئ فى نفسه مره اخرى ويعود الى نفسه مره اخرى فهذا يشبه للوهله الاولى ال loop بانواعه

فهل هذا صحيح ؟ ام لان الامر جديد فهو يختلط على ؟

ترى انت فالعقل عندما يصادف شئ جديد يبحث في ذاكرته عن شئ مشاله ليحاول تفسيره انطلاقا من الشئ المشابه

عبد الرحمن أحمد أضف ردا

هل يمكن مثال , مع اسم هذا المفهوم باللغة الانجليزية ؟ كي ابحث اكثر فيه

لو رجعت لردي الأول

ستجد أني وضعت المصطلح الأجنبي Recursion مع رابط للويكي

صورة للمطلوب فى البرنامج

في الموسعة الحرة ويكيبيديا: