0Pricing
C Academy · Pelajaran

Masalah Rekursif Klasik

Faktorial dan Fibonacci.

Masalah Rekursif Klasik adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

Masalah Klasik

Beberapa masalah secara alami cocok diselesaikan dengan rekursi. Mempelajari contoh-contoh klasik memberi Anda pola yang dapat digunakan kembali.

Dalam pelajaran ini kita membahas faktorial, bilangan Fibonacci, jumlah digit, faktor persekutuan terbesar, dan membalikkan output.

Faktorial

Faktorial dari n adalah n dikali faktorial dari n dikurangi 1, dengan 1! sama dengan 1.

Ini adalah contoh rekursi klasik: kasus dasar yang jelas dan satu pemanggilan rekursif.

#include <stdio.h>

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Bilangan Fibonacci

Setiap bilangan Fibonacci adalah jumlah dari dua bilangan sebelumnya. Definisi rekursifnya memerlukan dua kasus dasar: fib(0)=0 dan fib(1)=1.

Versi ini melakukan dua pemanggilan pada setiap langkah.

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

Menjalankan Fibonacci

Berikut program lengkapnya. fib(10) seharusnya mencetak 55.

Perhatikan bahwa versi sederhana ini mengulangi pekerjaan, sehingga lambat untuk n yang besar.

#include <stdio.h>

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

int main(void) {
    printf("%d\n", fib(10));
    return 0;
}

Jumlah Digit

Untuk menjumlahkan digit-digit suatu bilangan, ambil digit terakhir dengan n % 10 lalu lakukan rekursi pada sisanya dengan n / 10.

Kasus dasarnya adalah ketika n mencapai 0.

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

Jumlah Digit dalam Aksi

Untuk 1234, jumlahnya adalah 1+2+3+4 = 10. Mari kita memastikannya dengan program lengkap.

#include <stdio.h>

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

int main(void) {
    printf("%d\n", digit_sum(1234));
    return 0;
}

Faktor Persekutuan Terbesar

Algoritma Euclid secara alami bersifat rekursif. GCD dari a dan b sama dengan GCD dari b dan a % b.

Ketika b menjadi 0, a adalah jawabannya.

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Program Lengkap GCD

GCD dari 48 dan 18 adalah 6. Program ini mencetaknya.

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main(void) {
    printf("%d\n", gcd(48, 18));
    return 0;
}

Membalikkan Bilangan

Rekursi juga dapat mengatur output. Dengan mencetak digit terakhir setelah melakukan rekursi, Anda secara alami membalikkan urutan pemrosesan.

Pembantu ini mencetak setiap digit suatu bilangan pada barisnya sendiri menggunakan rekursi.

#include <stdio.h>

void print_digits(int n) {
    if (n == 0) return;
    print_digits(n / 10);
    printf("%d ", n % 10);
}

int main(void) {
    print_digits(729);
    printf("\n");
    return 0;
}

Fungsi Pangkat

Menaikkan suatu basis ke pangkat tertentu juga bersifat rekursif: base^exp sama dengan base dikalikan base^(exp-1).

Kasus dasar adalah eksponen 0, yang menghasilkan 1.

long power(int base, int exp) {
    if (exp == 0) return 1;
    return base * power(base, exp - 1);
}

Pola yang Akan Anda Gunakan Kembali

Perhatikan bentuk yang sama: periksa kasus dasar, lalu gabungkan langkah saat ini dengan hasil pemanggilan yang lebih kecil.

Setelah mengenali pola ini, banyak masalah dapat diselesaikan dengan fungsi rekursif yang singkat.

Pemeriksaan Singkat

Pilih kasus dasar yang benar.

Rangkuman

Faktorial, Fibonacci, jumlah digit, GCD, dan pangkat memiliki satu pola rekursif yang sama: tangani kasus dasar, lalu gabungkan nilai saat ini dengan submasalah yang lebih kecil.

Templat ini dapat diterapkan pada banyak tugas lainnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Masalah Rekursif Klasik” gratis?

Ya — teks lengkap “Masalah Rekursif Klasik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Masalah Rekursif Klasik”?

Faktorial dan Fibonacci. Kamu berlatih C 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 C Academy?

Tidak diperlukan pengalaman sebelumnya. C 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 2 dari 4.

Berapa lama pelajaran “Masalah Rekursif Klasik” 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 C Academy ini?

Ya. Setiap pelajaran C 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

  1. Cara Kerja Rekursi
  2. Masalah Rekursif Klasik
  3. Rekursi vs Iterasi
  4. Menghindari Stack Overflow
← Kembali ke C Academy