Wednesday, November 23, 2016

REKURSIF


Percobaan
Program 7.1 Cetak bilangan
#include <stdio.h>

void cetak(int n);

main(void) {
cetak(5);
}

/*
 * fungsi cetak()
 * tipe kembalian: void
 * parameter:
 * n: int
 * n sebagai jumlah bilangan
 *
 */

void cetak(int n) {
if(n >= 0) { // syarat rekursi, n >= 0
printf("%d\n", n); // mencetak n
cetak(n - 1); // rekursi
}
}

Program 7.2 Jumlah
#include <stdio.h>

int jumlah(int x);

int main(void) {
int n;

printf("n: ");
scanf("%d", &n);

printf("%d", jumlah(n));

return 0;
}

/*
 * fungsi jumlah()
 * tipe kembalian: int
 * parameter:
 * x: int
 * x sebagai suku bilangan
 *
 */

int jumlah(int x) {
if(x == 0) // syarat rekursi berhenti
return 0;
else
return x + jumlah(x - 1); // rekursi
}

Program 7.3 Piramid
#include <stdio.h>

void piramid(int t);

int main(void) {
int tinggi;

printf("tinggi piramid: ");
scanf("%d", &tinggi);

piramid(tinggi);

return 0;
}

/*
 * fungsi piramid()
 * tipe kembalian: int
 * parameter:
 * t: int
 * t sebagai tinggi
 *
 */

void piramid(int t) {
int i;

if(t >= 1) { // syarat rekursi, t >= 1
for(i = 1; i <= t; i++) // menggambar karakter *
printf("*");

printf("\n");

piramid(t - 1); // rekursi
}
}

Program 7.4 Faktorial
#include <stdio.h>

int faktorial(int n);

int main(void) {
int n;

printf("Masukkan bilangan: ");
scanf("%d", &n);

printf("Faktorial %d! = %d", n, faktorial(n));

return 0;
}

/*
 * deklarasi fungsi faktorial()
 * tipe kembalian: int
 * parameter:
 * n: int
 *
 * n sebagai bilangan yang dihitung
 */

int faktorial(int n) {

// bila n bernilai < 2 maka

if(n < 2) {
// fungsi mengembalikan nilai 1
// sekaligus sebagai batas rekursi akan berhenti
return 1;
} else {

// proses rekursi
// di sini terjadi pemanggilan dirinya sendiri

// faktorial(n) = n * faktorial(n - 1);

return n * faktorial(n - 1);
}
}

Program 7.5Fibonacci
#include <stdio.h>

int fibonacci(int n);

int main(void) {
int n;

printf("Masukkan suku: ");
scanf("%d", &n);

printf("Bilangan Fibonacci ke-%d adalah %d", n, fibonacci(n));

return 0;
}

/*
 * fungsi fibonacci()
 * tipe kembalian: int
 * parameter
 * n: int
 * n sebagai suku bilangan
 *
 */

int fibonacci(int n) {
if(n <= 2) // syarat rekursi, n <= 2
return 1;
else
return fibonacci(n - 2) + fibonacci(n - 1); // rekursi
}

No comments:

Post a Comment