الخوارزمياتحساب قيمة الـ Factorial للعدد - التمرين الثاني
المطلوب
أكتب برنامج يطلب من المستخدم إعطائه عدد صحيح و يخزنه في المتغير N.
ثم يقوم بحساب ناتج جمع جميع الأرقام من 1 إلى N كما في الصورة التالية.
إرشادات
Sهو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلىN.iهو المتغير (العداد) الذي يزيد واحد في كل دورة.Fهو المتغير الذي نخزن فيه الـ Factorial لقيم العدادi.Nهو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.- الحلقة تبدأ من 1 و تتوقف عند
N, أي عند العدد الذي أدخله المستخدم. - ركز جيداً, نحن لا نجمع قيم العداد
iبل نجمع الـ Factorial لكل قيمة من قيم العدادi.
النتيجة المطلوبة
لنفترض أن المستخدم أدخل العدد 4.
تحليل النتيجة
الخوارزمية
كود الجافا
import java.util.Scanner; public class Factorial { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; int F; double S = 0; System.out.print("Enter a number For N : "); N = input.nextInt(); for (int i=1; i<=N; i++) { F = 1; for (int k=1; k<=i; k++) { F = F * k; } S = S + F; } System.out.print("S = " +S+ "\n"); } }
شرح الكود
int N; int F; double S = 0;
- هنا قمنا بتجهيز المتغير
Nلتخزين الرقم الذي سيدخله المستخدم. - و المتغير
Fلتخزين الـ Factorial لكل قيمة من قيم العدادiالذي سنستخدمه في الحلقة. - و المتغير
Sلتخزين المجموع النهائي.
System.out.print("Enter a number for N: ");
N = input.nextInt();- هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير
N.
for (int i=1; i<=N; i++) { F = 1; for (int k=1; k<=i; k++) { F = F * k; } S = S + F; }
- هنا في كل دورة من دورات الحلقة
iسيحدث التالي: - سيتم وضع القيمة 1 كقيمة أولية للمتغير
Fلأننا سنستخدم هذا المتغير لتخزين قيمة الـ Factorial في كل مرة للعدادi. - بعدها, سيتم إنشاء حلقة داخلية تبدأ من 1 إلى قيمة العداد
iالحالية بهدف حساب قيمة الـ Factorial للعدادiو تخزينها في المتغيرFبشكل مؤقت. - بعد أن أصبحت قيمة الـ Factorial للعداد
iمخزنة في المتغيرFسيتم إضافتها على قيمة المتغيرS.
System.out.print("S = " +S+ "\n");
- في الأخير سيتم عرض نتيجة جمع قيم الـ Factorials المخزنة في المتغير
S.