Latest web development tutorials

C العودية

يشير العودية إلى تعريف طريقة الدالة المستخدمة في الدالة نفسها.

على سبيل المثال:
كان هناك مرة واحدة في الجبل، الجبل كان هناك معبد، ومعبد له الراهب القديم، ورواية القصص لراهب شاب عليه! ما قصة أليس كذلك؟ "وكان هناك مرة واحدة في الجبل، الجبل كان هناك معبد، ومعبد له الراهب القديم، ورواية القصص لراهب شاب عليه! ما قصة أليس كذلك؟" وكان هناك مرة واحدة في الجبل، الجبل كان هناك معبد، ومعبد له الراهب القديم، و قصة الراهب الشاب ذلك! ما القصة هو؟ ...... '

الصيغة كالتالي:

void recursion()
{
   recursion(); /* 函数调用自身 */
}

int main()
{
   recursion();
}

لغة C دعم العودية، وهذا هو، وهي وظيفة يمكن استدعاء نفسها. ومع ذلك، عند استخدام العودية، تجدر الإشارة إلى مبرمج أن تعريف وظيفة يخرج من الظروف، وإلا فإنه سوف يذهب في حلقة لا نهائية.

وظيفة متكررة في حل العديد من المشاكل الرياضية لعبت دورا حاسما، مثل حساب مضروب عدد، وتوليد عدد فيبوناتشي، وهلم جرا.

عدد مضروب

يستخدم المثال التالي دالة العودية لحساب مضروب عدد معين:

#include <stdio.h>

double factorial(unsigned int i)
{
   if(i <= 1)
   {
      return 1;
   }
   return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));
    return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

15 的阶乘为 1307674368000.000000

عدد فيبوناتشي

فيبوناتشي يستخدم المثال التالي دالة عودي إلى توليد عدد معين من الأعمدة:

#include <stdio.h>

int fibonaci(int i)
{
   if(i == 0)
   {
      return 0;
   }
   if(i == 1)
   {
      return 1;
   }
   return fibonaci(i-1) + fibonaci(i-2);
}

int  main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
       printf("%d\t%n", fibonaci(i));
    }
    return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

0	1	1	2	3	5	8	13	21	34