الدّالّة (7) - Recursion 2
مثال 1:
#include <iostream> using namespace std; int sum(int n) { if (n == 1) return 1; else return n + sum(n - 1); } int main() { cout << sum(5) << endl; return 0; }
هذه الدالة تحسب مجموع العدد الطبيعي الأول n
. الأعداد الطبيعية الأولى n
هي الأرقام من 1 لـ n
.
تعمل الدالة عن طريق استدعاء نفسها بشكل متكرر لحساب مجموع الأعداد الطبيعية الأولى n - 1
. إذا كان الرقم المدخل n
هو 1، تقوم الدالة ببساطة بإرجاع الرقم 1، لأن مجموع الرقم الطبيعي الأول هو 1. وبخلاف ذلك، تقوم الدالة بإرجاع مجموع الرقم المدخل n
ومجموع الأعداد الطبيعية الأولى n - 1
.
المخرجات:
15
مثال 2:
#include <iostream> using namespace std; int sum(int x, int y) { if (x == y) return x; else return y + sum(x, y - 1); } int main() { cout << sum(4, 6) << endl; return 0; }
هذه دالة recursive sum
تأخذ متغيرين صحيحين كـ parameters x
و y
، والتي تمثل نطاق الأرقام المطلوب جمعها. إليك كيفية عمل الدالة:
- الحالة الأساسية: إذا كانت
x
تساويy
، فهذا يعني أننا وصلنا إلى نهاية الـ range، فسوف يرجعx
. هذا هو شرط إنهاء الrecursion. - حالة الـ recursive: إذا كانت
x
لا تساويy
، فستضاف القيمة الحالية لـy
إلى نتيجة استدعاءsum
مرة أخرى مع نفسx
وy-1
. يؤدي هذا بشكل فعال إلى تقسيم مجموع الـ range إلى مشاكل فرعية أصغر عن طريق تقليل الحد العلوي (y
بمقدار 1 في كل مرة يتم إستدعاء دالة الـ recursive.
في الدالة الرئيسة main
، يتم إستدعاء الدالة sum
مع الـ (arguments) 4
و 6
ثم يقوم بإخراج النتيجة إلىشاشة المخرجات باستخدام cout
. في هذه الحالة، سيتم حساب مجموع الأعداد الصحيحة من 4 إلى 6 وطباعة النتيجة.
عند تشغيل هذا الكود، فإنه سيخرج مجموع الأعداد الصحيحة من 4 إلى 6، وهو 4 + 5 + 6 = 15. إذن، سيكون ناتج هذا الكود:
15