الآن بعد أن أصبح لدينا برنامجنا للطريقة التكرارية ، سنقوم بإنشاء نسخة رسمية. سوف تسأل السؤال ، ما الذي يختلف عنه؟ حسنا! النسخة العودية هي وظيفة تستدعي نفسها حتى تصل إلى نقطة الارتكاز. هذه المكالمة العودية هي ما يعادل الحلقة في الإصدار التكراري.
ما عليك سوى ترجمة البرنامج التكراري للحصول على برنامج متكرر. نقطة الارتكاز هي حالة التوقف في نمط الحلقة < span = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >أنا< n / 2< / span> (في البرنامج نضع i>=(n+1)/2 لأنه عندما تم استدعاء الوظيفة، تم تقليل حجم الصفيف n-1). < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >i تصبح المعلمة الرئيسية للدالة لأن اختبار الإيقاف يتم بعد كل زيادة i.
يوضح المثال التالي كيفية عكس عناصر صفيف بشكل متكرر في C.
#include< كونيو.ه> < فرع />#include< stdio.h>
int * معكوس (int [] ، int ، int) ؛
main()
{
int i,n;
printf ("حجم المصفوفة") ؛
scanf("٪d",& n);
int t[n]; < BR / > int * ti ؛
for(i=0; أنا< n; i++)
{
printf("t[٪d]=",i);
scanf("٪d",& t[i]);
}
ti = معكوس (t ، n-1،0) ؛
printf("\nالصفيف العكسي هو: \n");
for(i=0; أنا< n; i++)
{
printf("\nt[٪d]=٪d",i,ti[i]);
}
getch ();
}
int * معكوس (int t [] ، int n ، int i)
{
int temp;
إذا (i>=(n+1)/2)
إرجاع t;
else{
temp = t[i];
t[i]=t[n-i];
t[n-i]=temp;
العودة العكسية (t ، n ، i + 1) ؛
}
} < / pre>< / div>ينتج عن تجميع وتنفيذ هذا الرمز ما يلي: