Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

Prototipe dan rekursi dalam C

Deklarasikan fungsi sebelum pemanggilan dan ubah data luar melalui pointer yang valid.

Buka di kompiler

Prototipe dan rekursi dalam C
Deklarasikan fungsi sebelum pemanggilan dan ubah data luar melalui pointer yang valid.

Prototipe menetapkan tipe nilai balik dan parameter; definisi harus cocok dengannya. Argumen disalin sehingga perubahan parameter biasa tidak mengubah variabel milik pemanggil.

Untuk menukar nilai milik pemanggil, teruskan alamatnya dan tulis melalui pointer. Teknik ini kadang disebut pass-by-reference, tetapi mekanisme bahasa tetap meneruskan nilai pointer.

Dalam algoritma rekursif, tentukan kasus dasar terlebih dahulu dan pastikan setiap pemanggilan memperkecil masalah. Uji masukan kecil dan perhitungkan penggunaan stack.

Kode C

#include <stdio.h>
#include <stdlib.h>

// Function prototypes
unsigned long long factorial(unsigned int n);
void swap(int *a, int *b);
int add(int x, int y);

int main(void) {
    int a = 15, b = 30;
    printf("1. Sum function: %d + %d = %d\n", a, b, add(a, b));

    printf("\n2. Pass-by-Reference Swap:\n");
    printf("   Before swap: a = %d, b = %d\n", a, b);
    swap(&a, &b);
    printf("   After swap:  a = %d, b = %d\n", a, b);

    printf("\n3. Recursive Factorials:\n");
    for (unsigned int i = 0; i <= 6; i++) {
        printf("   %u! = %llu\n", i, factorial(i));
    }

    return EXIT_SUCCESS;
}

int add(int x, int y) {
    return x + y;
}

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Recursive factorial with base case
unsigned long long factorial(unsigned int n) {
    if (n <= 1) {
        return 1; // Base case
    }
    return (unsigned long long)n * factorial(n - 1); // Recursive step
}
Buka di kompiler

Keluaran yang diharapkan

1. Sum function: 15 + 30 = 45

2. Pass-by-Reference Swap:
   Before swap: a = 15, b = 30
   After swap:  a = 30, b = 15

3. Recursive Factorials:
   0! = 1
   1! = 1
   2! = 2
   3! = 6
   4! = 24
   5! = 120
   6! = 720

Pertanyaan umum

Mengapa kode dan keluarannya tetap dalam bahasa Inggris?

Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.