العودية هي عملية تكرار العناصر بطريقة مشابهة للذات. في لغات البرمجة ، إذا سمح لك أحد البرامج باستدعاء وظيفة داخل نفس الوظيفة ، فيُطلق عليها استدعاء متكرر للوظيفة.
void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); }
تدعم لغة البرمجة C العودية ، أي وظيفة تستدعي نفسها. ولكن أثناء استخدام العودية ، يحتاج المبرمجون إلى توخي الحذر عند تحديد شرط الخروج من الوظيفة ، وإلا ستدخل في حلقة لا نهائية.
تعد الدوال التكرارية مفيدة جدًا في حل العديد من المشكلات الرياضية ، مثل حساب عاملي الرقم ، وتوليد سلسلة فيبوناتشي ، إلخ.
عامل رقم
يحسب المثال التالي مضروب رقم معين باستخدام دالة تكرارية -
#include <stdio.h> unsigned long long int factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 12; printf("Factorial of %d is %d\n", i, factorial(i)); return 0; }
عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -
Factorial of 12 is 479001600
سلسلة فيبوناتشي
المثال التالي يولد سلسلة فيبوناتشي لرقم معين باستخدام دالة تكرارية -
#include <stdio.h> int fibonacci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d\t\n", fibonacci(i)); } return 0; }
عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -
0 1 1 2 3 5 8 13 21 34
تعليقات
إرسال تعليق