اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

مرحبا،

إن حساب العاملي لعدد ما هو ناتج الجداء المتراكم للأعداد من 1 حتى العدد نفسه لنفرض أنه n

يمكننا حسابها بالستخدام حلقة واحد مع متغير نخزن فيه الجداء التراكمي..

function result = Factorial(n)
	factorial=1; // قيمة بدائية للناتج
	for i=1:1:n  // حلقة 
		factorial=factorial*i; 
// جداء تراكمي حيث أن القيمة المحسوبة هي القدية ضرب العدد الحالي و نخزن الناتج الجديد مكان القيدم
end

اسم الدالة Factorial نحفظها في ملف باسم Factorial.m

نعيد النتيجة مخزنة في المتحول factorial

بالتوفيق

  • 0
نشر

مرحباً بك،

بإمكانك أيضاً إستخدام الطريقة التعاودية فكما تعلم أن: 

n! = n * (n - 1)!

و سيكون البرنامج بهذا الشكل:

fprintf('%d! = %d\n', 6, fact(6)); % output: 6! = 720

function x = fact(n)
if n<=1 % شرط التوقف
  x = 1; % نُعيد 1
else
  x = n * fact(n-1) ; % الدالة تُنادي على نفسها 
end

بإمكانك تجربة البرنامج من خلال هذا الرابط: هنا ثم إضغط Run

شرح:

بما أن n = 6 فعند دخول الدالة (fact(6: فإن الشرط لن يتحقق و بالتالي سيتم تنفيذ جزء و إلا و بالتالي (x = 6 * fact(5 و هنا سيتم إستدعاء الدالة fact ثانيةً: 5 لن يُحقق الشرط و بالتالي سيتم إرجاع  fact(4) * 5  و بالتالي سيُصبح 6 * 5 * (fact(4 و هكذا إلى أن نصل إلى 1 الذي يُحقق الشرط و هنُا سيتم إرجاع 1 و بالتالي x سيُصبح 6 * 5 * 4 * 3 * 2 * 1 اي:

x = 6 * 5 * 4 * 3 * 2 * 1 = 720

و هكذا بالنسبة لأي عدد آخر،

بالتوفيق.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...