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.
Tantangan
MudahBuat 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);
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online