مرحباً بك،
بإمكانك أيضاً إستخدام الطريقة التعاودية فكما تعلم أن:
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
و هكذا بالنسبة لأي عدد آخر،
بالتوفيق.