1. 1
سلسلة هيمو لعلوم الحاسب
الدرس (27)
RECURSION
التكرار و العودة
التاليف البرمجي
هيثم مالك فهمي محمد الشريف
2. سلسلة هيمو لعلوم الحاسب
2
انشاء برنامج يقوم بجمع قيمة عددية من خالل المسلسلة تنازلي لنفس ذلك العدد ؟
الحل
#include<iostream>
#include<algorithm>
using namespace std;
int summation(int number);
int main()
{
int num;
int reslut;
cout <<"n t t Enter number Recursion t";
cin>> num;
reslut =summation( num);
cout <<"n t t The Value is:"<<reslut<<endl;
system("pause");
return 0;
}
int summation(int number)
{
if(number==1)
return 1;
return (number+summation(number-1));
}
فكرة البرنامج
برنامج يجمع االرقام
1+2+3+4+5 …. Number
يمكن كتابة االرقام هكذا
مجموع كل االعدد القبلية لهذا العددNum+
(num-1) اي يكون
اي وضع العدد 4 يكون كا التالي
4 جمع ماقبل العدد 4و هو 3+2+1 يعطي قيمة 6 ثم اضف قيمة 4 ليصبح الناتج 11 لمتناقصات العدد
3. 3
سلسلة هيمو لعلوم الحاسب
الشرح
1- سوف اقوم باالعالن عن الوظيفة summationو هي من النوع integer
2- ثم بعد ذلك انتقل الي الجزء السفلي من البرنامج لكتابة الكود الخاص بعملية حساب العدد المختار لعرض قيمتة
3- سوف اقوم بوضع الشرط ifفي حالة اذا كان العدد المكتوب يساوي 1 قم بطباعة و اعادة القيمة الي 1 حيث ال
يوجد للعدد 1 قيم تنازلية و يخرج من التكرار و العودة
4- اما اذا كان العدد اكبر من القيمة العددية 1 فهذا يعني وجود قيم تنازلية للعدد
5- لو فرضت ان القيمة الموضوعة هي 5 يوضع داخل الدالة ثم يذهب الي الشرط نجد ان الشرط ال يتحقق حيث انه
اكبر من 1
6- فيذهب الي الكود التالي و هو ))1-)number+summation (number
7- يصبح 5 = + numberقيمة )1- summation (numberاي تساوي 4 حيث طرح العدد 5 من المتغير
numberثم تم اضافتة الي المتغير summation
8- الي ان تصل قيمة العدد في المتغير numberالي 1 و من ثم تخضع لشرط الخروج من التكرار و العودة
الشرح المرسوم
)int summation(int number
{
)1==if(number
;1 return
;))1-return (number+ summation(number
}
مما سبق
القيمة المدخلة هي 4
و من الدالة يكون التالي
بما ان الدالة االساسية اصبحت تساوي القيمة المدخلة 4( 4(summation
))1-return (number+ summation(number
)1-4(4+summation
اي
4
)3(4+summation
3
)2(4+summation
2
)1(4+summation
1
)0(4+summation
11
يصبح القيمة الكاملة