Fungsi Rekursif

Setiap fungsi dalam program C dapat dipanggil secara rekursif; yaitu, ia dapat memanggil dirinya sendiri. Jumlah panggilan rekursif terbatas pada ukuran tumpukan. Lihat opsi penaut /STACK (Alokasi Tumpukan) untuk informasi tentang opsi penaut yang mengatur ukuran tumpukan. Setiap kali fungsi dipanggil, penyimpanan baru dialokasikan untuk parameter dan untuk variabel auto dan register, sehingga nilainya di panggilan sebelumnya yang belum selesai tidak ditimpa. Parameter hanya dapat diakses secara langsung ke instans fungsi di mana mereka dibuat. Parameter sebelumnya tidak dapat diakses secara langsung ke instans fungsi berikutnya.

Perhatikan bahwa variabel yang dideklarasikan dengan penyimpanan static tidak membutuhkan penyimpanan baru dengan setiap panggilan rekursif. Penyimpanan mereka ada selama masa pakai program. Setiap referensi ke variabel tersebut mengakses area penyimpanan yang sama.

Contoh

Contoh ini menggambarkan panggilan rekursif:

int factorial( int num );      /* Function prototype */

int main()
{
    int result, number;
    .
    .
    .
    result = factorial( number );
}

int factorial( int num )      /* Function definition */
{
    .
    .
    .
    if ( ( num > 0 ) || ( num <= 10 ) )
        return( num * factorial( num - 1 ) );
}

Lihat juga

Panggilan Fungsi