السلام عليكم ورحمه الله وبركاتة
خوارزمية إيجاد مضروب لعدد ما
أكيد بالطبع الكل مر عليه برنامج لحساب مضروب عدد ما ولكن أغلب البرامج التى رآيتها تغفل عمليه تعريف المتغيرات سواء فى أى لغة برمجة مع أن كلما زاد العدد بمقدار صغير كلما كان مضروبة عدد كبير جداً وبالتالى عدم مقدرة المتغيرات ذات المدى الصغير حمل ناتج مضروب العدد , فعند كتابة برامج مثل هذه يجب مراعاة تعريف المتغيرات والتى يغفل عنها كثير من المبرمجين والتى أصفها أنا من مميزات المبرمج الناجح هو مقدرته على تحديد نوع المتغيرات التى يستخدمها بكل دقة على سبيل المثال عند إنشاء لعبه للهاتف الجوال بإستخدام لغة جافا مثلاً فيجب مراعات إستخدام أقل أنواع المتغيرات لتأدية العمل المطلوب لأن حجم البرنامج وسرعة أدائه تفرق كثيراً فى تقييم البرنامج أو اللعبة مقارنة بنظائره من نفس النوع والمقارنة لا تقع من المبرمجين فحسب بل للمستخدمين الدور الأول فى تحديد ماهيه البرامج والألعاب الأكثر كفائة عن الأخرى.
لا أطيل عليكم على سبيل المثال برنامج لإيجاد مضروب عدد ما بلغة السي يكتب فى أغلب الكتب على الصورة التالية :
int factorial (int a )
{
if (a > 1)
return a*factorial(a-1) ;
else
return 1;
}ونحن نعلم أن مدى المتغير من نوع int من 2,147,438,648- حتى 2,147,438,647
و مضروب العدد 20 هو 2,432,902,008,176,640,000
إذاً فلماذا نعرف المتغير من نوع int ولدينا متغيرات أكبر منه من نوع عدد صحيح معرفه داخل اللغة وهو unsigned long long int والذى يبلغ مداه من 0 إلى 18,446,744,073,709,551,615
طبعاً بعد مضروب العدد 20 لن تجدى المتغيرات المعرفة مسبقاً فى اللغة ويجب إستخدام مكتبات معرف بها أنواع أخرى لحساب تلك الأرقام الضخمة , أو إستخدام الملفات لإجراء العمليات علي الأرقام الكبيرة .
فالأصح كتابة البرنامج السابق على الصورة التالية :
unsigned long long int factorial (unsigned char a )
{
if (a > 1)
return a*factorial(a-1) ;
else
return 1;
}ومدى المتغير unsigned char من 0 إلى 255

