C rekursi


Rekursi merujuk kepada kaedah menggunakan fungsi itu sendiri dalam definisi fungsi.

Contohnya:
Dahulu ada sebuah gunung, dan ada sebuah kuil di dalam kuil itu, dan dia sedang bercerita kepada orang muda sami! apa cerita? "Pada suatu masa dahulu, terdapat sebuah gunung, dan terdapat sebuah kuil di gunung itu. Ada seorang sami tua di dalam kuil itu, dan dia bercerita kepada rahib muda itu! Apakah kisahnya? 'Pada suatu ketika dahulu. , ada sebuah gunung, dan ada sebuah kuil di dalam kuil itu, dan dia sedang menceritakan kisah kepada bhikkhu kecil itu. .'"

Format sintaks adalah seperti berikut:

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

Bahasa C menyokong rekursi, iaitu, fungsi boleh memanggil dirinya sendiri. Tetapi apabila menggunakan rekursi, pengaturcara perlu memberi perhatian untuk menentukan syarat untuk keluar dari fungsi, jika tidak, ia akan memasuki gelung tak terhingga.

Fungsi rekursif memainkan peranan penting dalam menyelesaikan banyak masalah matematik, seperti mengira faktorial nombor, menjana jujukan Fibonacci dan sebagainya.

Faktorial Nombor

Contoh berikut menggunakan fungsi rekursif untuk mengira pemfaktoran nombor tertentu:

#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;}

Apabila kod di atas disusun dan dilaksanakan , Ia menghasilkan keputusan berikut:

15 的阶乘为 1307674368000.000000

Jujukan Fibonacci

Contoh berikut menggunakan fungsi rekursif untuk menjana Jujukan Fibonacci untuk nombor tertentu:

#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;}

Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:

0112358132134