Menu
CoddyTech

Fungsi Rekursif

Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 8 dari 68.

Rekursi adalah teknik pemrograman ketika sebuah fungsi memanggil dirinya sendiri untuk menyelesaikan masalah. Hal ini menciptakan perilaku seperti perulangan, tetapi alih-alih menggunakan perulangan tradisional, fungsi tersebut berulang kali memanggil dirinya sendiri dengan parameter yang diubah hingga menemukan solusi.

Setiap fungsi rekursif harus memiliki dua komponen penting agar berfungsi dengan benar:

Kasus Dasar: Ini adalah kondisi yang menghentikan rekursi. Tanpanya, fungsi akan memanggil dirinya sendiri tanpa batas, sehingga programmu mengalami crash. Kasus dasar menentukan kapan fungsi harus mengembalikan hasil alih-alih memanggil dirinya sendiri lagi.

Langkah Rekursif: Di sinilah fungsi memanggil dirinya sendiri dengan versi masalah awal yang telah diubah, dan secara bertahap bergerak menuju kasus dasar.

Berikut contoh sederhana fungsi rekursif yang menghitung faktorial:

<?php
function factorial($n) {
    // Kasus dasar: faktorial dari 1 adalah 1
    if ($n <= 1) {
        return 1;
    }
    
    // Langkah rekursif: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Output: 120
?>

Dalam contoh ini, factorial(5) memanggil factorial(4), yang memanggil factorial(3), dan seterusnya, sampai mencapai factorial(1) (kasus dasar). Lalu hasilnya dikalikan kembali: 1 × 2 × 3 × 4 × 5 = 120.

challenge icon

Tantangan

Mudah

Buat fungsi rekursif bernama sumDigits yang menerima bilangan bulat positif dan mengembalikan jumlah digitnya. Fungsi ini harus menggunakan rekursi untuk menguraikan bilangan digit demi digit.

Kamu akan menerima satu input: bilangan bulat positif. Baca input tersebut, panggil fungsi rekursifmu dengan bilangan itu, lalu cetak jumlah digitnya.

Format input: Satu baris yang berisi bilangan bulat positif

Output yang diharapkan: Jumlah semua digit dalam bilangan tersebut

Coba sendiri

<?php
// Baca input
$number = intval(fgets(STDIN));

// TODO: Buat fungsi rekursif sumDigits milikmu di sini


// Panggil fungsi dan tampilkan hasilnya sebagai output
echo sumDigits($number);
?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler PHP online