English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستتعلم كيفية كتابة دالة تكرار متبادل باستخدام لغة البرمجة C من خلال مثال.
الدالة التي تستدعي نفسها تُسمى دالة تكرار متبادل. ويُسمى هذا التقنية التكرار المتبادل.
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
يستمر التكرار المتبادل حتى يتم تحقيق بعض الشروط لمنع التكرار المتبادل.
لمنع التكرار المتبادل غير المحدود، يمكن استخدام دعوة التكرار المتبادل في فرع واحد فقط، بينما لا يتم في الفرع الآخر.استخدام جمل if ... else(أو طريقة مشابهة).
#include <stdio.h> int sum(int n); int main() { int number, result; printf("أدخل عدد صحيح إيجابي: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); تعود 0; } int sum(int n) { if (n != 0) // دالة sum() تستدعي نفسها تعود n + sum(n-1); else تعود n; }
نتيجة الإخراج
أدخل عدد صحيح إيجابي: 3 sum = 6
في البداية، يتم استدعاء دالة sum() من دالة main()، ويتم إرسال number كمعامل.
إذاً، يتم تعيين القيمة الابتدائية لـ sum() إلى 3. في الدعوة التالية للدالة، يتم إرسال 2 إلى دالة sum(). يتم هذا العمل حتى يتم الوصول إلى n يساوي 0.
عندما يكون n يساوي 0، تفشل شرط if، وتُنفذ الجزء else، ويعود الناتج النهائي إلى دالة main().
递归使程序优雅。但是,如果性能至关重要,请使用循环代替,因为递归通常要慢得多。
尽管如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在诸如树遍历之类的问题中通常使用递归。