الدّالّة (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