位置:首頁 > 高級語言 > C語言教學 > C語言遞歸

C語言遞歸

遞歸是在自相似的方式重複項目的過程。同樣適用於編程語言以及其中,如果一個程序可以調用同一個函數被調用的函數的遞歸調用,如下函數內使用。

void recursion()
{
   recursion(); /* function calls itself */
}

int main()
{
   recursion();
}

C語言編程語言支持遞歸,即要調用的函數本身。不過,在使用遞歸,程序員需要謹慎確定從函數的退出條件,否則會在無限循環。

遞歸函數是解決許多數學問題想計算一個數階乘非常有用的,產生斐波係列等

數字階乘

以下是一個例子,它計算階乘用於使用一個遞歸函數給定的數:

#include <stdio.h>

int factorial(unsigned int i)
{
   if(i <= 1)
   {
      return 1;
   }
   return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("Factorial of %d is %d
", i, factorial(i));
    return 0;
}

當上述代碼被編譯和執行時,它產生了以下結果:

Factorial of 15 is 2004310016

斐波那契係列

以下是另一個例子,其給定參數產生斐波串聯使用一個遞歸的函數:

#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	%n", fibonaci(i));
    }
    return 0;
}

當上述代碼被編譯和執行時,它產生了以下結果:

0	1	1	2	3	5	8	13	21	34