الخوارزميات العودية (Récursivité)
العودية (Récursivité أو Recursion) هي تقنية برمجية تقوم فيها الدالة باستدعاء نفسها لحل مشكلة بتقسيمها إلى مسائل فرعية أصغر. تعتبر من المفاهيم الهامة في امتحانات البكالوريا شعبة تقني رياضي.
1. مفهوم الدالة العودية
الدالة العودية هي دالة تستدعي نفسها ضمن تعريفها. يجب أن تحتوي على شرط توقف (Condition darrêt) يمنع التكرار اللانهائي.
function Factorielle(n : integer) : integer;
begin
if n <= 1 then
Factorielle := 1 { شرط التوقف }
else
Factorielle := n * Factorielle(n - 1); { استدعاء عودي }
end;
2. شروط الدالة العودية
- شرط التوقف (Cas de base): حالة بسيطة يمكن حلها مباشرة
- الاستدعاء العودي (Appel récursif): استدعاء الدالة نفسها بقيمة أصغر
- التقارب: يجب أن تقترب كل استدعاء من شرط التوقف
3. مقارنة بين الخوارزميات العودية والتكرارية
| الخوارزميات العودية | الخوارزميات التكرارية |
|---|---|
| أسهل في الفهم والكتابة | قد تكون أطول في الكتابة |
| تستهلك ذاكرة أكثر (Stack) | تستهلك ذاكرة أقل |
| مناسبة للمسائل ذات البنية العودية (الأشجار) | مناسبة للعمليات البسيطة |
| قد تكون أبطأ | عادة أسرع في التنفيذ |
📝 تمرين بكالوريا محلول – حساب المضروب (Factorielle)
التمرين: اكتب برنامجاً في Pascal يستخدم دالة عودية لحساب مضروب عدد صحيح n (n!) حيث n يُدخله المستخدم. ملاحظة: n! = 1 × 2 × 3 × … × n.
الحل النموذجي:
program FactorielleRecursive;
uses wincrt;
var
n : integer;
function Fact(n : integer) : integer;
begin
if n <= 1 then
Fact := 1
else
Fact := n * Fact(n - 1);
end;
begin
write("Entrez un entier positif : ");
readln(n);
if n < 0 then
writeln("Erreur : nombre negatif !")
else
writeln(n, "! = ", Fact(n));
end.
📝 تمرين بكالوريا محلول – متتالية فيبوناتشي
التمرين: اكتب دالة عودية في Pascal لحساب حد متتالية فيبوناتشي حيث: Fib(0)=0, Fib(1)=1, Fib(n)=Fib(n-1)+Fib(n-2).
function Fibonacci(n : integer) : integer;
begin
if n <= 1 then
Fibonacci := n
else
Fibonacci := Fibonacci(n-1) + Fibonacci(n-2);
end;
📌 نصائح للبكالوريا
- حدد دائماً شرط التوقف أولاً قبل كتابة الاستدعاء العودي
- تأكد أن المشكلة الفرعية أصغر من المشكلة الأصلية
- يمكن تحويل معظم الخوارزميات العودية إلى تكرارية والعكس
- في امتحان البكالوريا، اكتب الخوارزمية العودية إذا كانت أبسط في الفهم
📍 دروس مشابهة:
المصفوفات (Tableaux) في لغة Pascal: التعريف والتصريح والمعالجة مع تمارين بكالوريا محلولة
خوارزميات الفرز والبحث: الفرز الفقاعي والبحث الثنائي مع تمارين بكالوريا محلولة
مدونة التربية و التعليم في الجزائر – دروس، فروض، نتائج امتحانات مدونة التربية والتعليم في الجزائر | تحضير الدروس، فروض واختبارات، نتائج البكالوريا وBEM، مسابقات التوظيف، والتوجيه المدرسي للطلاب وأولياء الأمور.