Rekursi dan Beberapa Nilai Kembalian
Fungsi yang memanggil dirinya sendiri dan bercabang.
Rekursi dan Beberapa Nilai Kembalian adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.
Fungsi yang Memanggil Dirinya Sendiri
Rekursi adalah saat sebuah fungsi memanggil dirinya sendiri untuk menyelesaikan bagian yang lebih kecil dari masalah yang sama, langkah demi langkah. 🔁
Setiap Rekursi Memerlukan Kasus Dasar
Kasus dasar adalah titik penghentian. Tanpanya, fungsi akan memanggil dirinya sendiri selamanya dan menyebabkan luapan tumpukan.
Kasus Rekursif
Kasus rekursif memanggil fungsi lagi dengan masukan yang lebih kecil, terus bergerak menuju kasus dasar.
fn factorial(n: u64) u64 {
if (n <= 1) return 1;
return n * factorial(n - 1);
}Telusuri Pemanggilan Kecil
Pemanggilan factorial(3) menjadi 3 * factorial(2), lalu 2 * factorial(1). Kasus dasar mengembalikan 1 dan hasil-hasilnya dikalikan kembali ke atas.
Rekursi Menggunakan Tumpukan
Setiap pemanggilan menambahkan bingkai ke tumpukan. Terlalu banyak tingkat menyebabkan luapan tumpukan, jadi jagalah kedalaman rekursi tetap wajar.
Banyak Masalah Lebih Baik Menggunakan Perulangan
Segala sesuatu yang rekursif juga dapat ditulis sebagai perulangan. Perulangan menghindari bingkai tumpukan tambahan, sehingga sering kali menjadi pilihan yang lebih aman.
fn factorial(n: u64) u64 {
var acc: u64 = 1;
var i: u64 = 2;
while (i <= n) : (i += 1) acc *= i;
return acc;
}Sebuah Fungsi Mengembalikan Satu Tipe
Fungsi Zig memiliki satu tipe pengembalian, tetapi dapat memiliki banyak pernyataan return yang semuanya menghasilkan tipe tersebut.
Pengembalian Awal Membuat Percabangan
Anda dapat mengembalikan nilai lebih awal dari berbagai cabang. Setiap jalur mengembalikan nilai dengan tipe yang dideklarasikan, lalu langsung keluar dari fungsi.
fn sign(n: i32) i32 {
if (n > 0) return 1;
if (n < 0) return -1;
return 0;
}Kembalikan Beberapa Nilai dalam Struct
Untuk mengembalikan beberapa nilai, kembalikan struct atau tuple yang menggabungkannya menjadi satu hasil.
fn divmod(a: u32, b: u32) struct { q: u32, r: u32 } {
return .{ .q = a / b, .r = a % b };
}Uraikan Hasilnya
Pemanggil membaca bidang yang telah digabungkan berdasarkan nama, seperti result.q dan result.r, untuk menggunakan setiap bagian yang dikembalikan.
const res = divmod(7, 2);
// res.q is 3, res.r is 1Kembalikan Galat Juga
Sebuah fungsi dapat mengembalikan gabungan galat sehingga satu cabang dapat menandakan kegagalan, sementara cabang lain mengembalikan nilai biasa.
Pemeriksaan Singkat
Anda menulis fungsi rekursif, tetapi fungsi tersebut tidak pernah berhenti dan mengalami kerusakan. Apa yang kemungkinan besar Anda lupakan?
Ringkasan
Rekursi memerlukan kasus dasar serta pemanggilan rekursif dengan masukan yang lebih kecil. Sebuah fungsi memiliki satu tipe pengembalian, tetapi banyak jalur pengembalian, dan struct menggabungkan beberapa hasil. 🎯
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Rekursi dan Beberapa Nilai Kembalian” gratis?
Ya — teks lengkap “Rekursi dan Beberapa Nilai Kembalian” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Rekursi dan Beberapa Nilai Kembalian”?
Fungsi yang memanggil dirinya sendiri dan bercabang. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Zig Academy?
Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Rekursi dan Beberapa Nilai Kembalian” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sintaks Fungsi dan Tipe Kembalian
- Meneruskan Nilai vs Referensi
- Fungsi pub dan Visibilitas
- Rekursi dan Beberapa Nilai Kembalian