BAB 14 RECURSION Pengertian Recursion. Recursion:

Slides:



Advertisements
Presentasi serupa
ARRAY.
Advertisements

Algoritma dan Struktur Data
PERTEMUAN VIII STRUKTUR LANJUT JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
Konsep Pemrograman Contoh Program C # include int main() { printf("Hello World From About\n"); getche (); return 0; }
3 Variabel, Konstanta Tipe Data dan dalam Bahasa C/C++ Java dan Bab
5. 1 Bab 05 Tipe Data dan Mengisi Variabel.
Function(2).
Algoritma dan Struktur Data
Bab 05 Tipe Data dan Mengisi Variabel
FUNGSI.
Universitas Budi Luhur
Dasar Pemrograman Pertemuan 10 Pengulangan dalam C
FUNGSI.
{Pertemuan 6 Struktur Perulangan}
ALGORITMA & STRUKTUR DATA I
Bab & 7.3 NESTED LOOP Array 1 Dimensi 273.
Algoritme dan Pemrograman
Perulangan (looping) BERSARANG & ARRAY
STACK 6.3 & 7.3 NESTED LOOP.
Apa itu Fungsi? Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu,
POINTER 6.3 & 7.3 NESTED LOOP.
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
Contoh-contoh Pemecahan Masalah TEE 2103 Algoritma & Pemograman
Fungsi TEE 2103 Algoritma & Pemrograman Dosen: Abdillah, MIT
06.3 Hari-6.
04.3 Hari-4.
{Pertemuan 7 Struktur Perulangan Lanjutan}
04.2 Hari-4.
04.1 Hari-4.
Struktur Data Khoiriya Latifa, M.Kom.
07.3 Hari-7.
PERULANGAN (LOOPING) Looping merupakan proses perulangan suatu blok pernyataan sebanyak yang diinginkan. Ada tiga bentuk dalam proses perulangan: Perulangan.
PERTEMUAN 9 Algoritma Presented by : Sity Aisyah, M.Kom
09.5 Hari-9.
09.4 Hari-9.
Pertemuan 9 Pengulangan dalam C Erna Sri Hartatik
Contoh Aplikasi Sederhana
Algoritme dan Pemrograman
PEMROGRAMAN DASAR.
Pemrograman Terstruktur
02.1 Hari-2.
FUNGSI.
7.1 Bab 07 Menginput Nilai melalui Keyboard 103.
Struktur Data Khoiriya Latifa, M.Kom.
FUNCTION 6.3 & 7.3 NESTED LOOP.
10.5 Nested loop 6.3 & 7.3 NESTED LOOP 255.
291.
Algoritma dan Pemrograman
04.2 Hari-4.
Perulangan (looping) BERSARANG & ARRAY
Pemograman Terstruktur
Pemrograman Terstruktur
S. Indriani Lestariningati, M.T
09.3 Hari-9.
Pertemuan Hari ke - 1 Sesi-2.
Pertemuan Hari ke - 1 Sesi-1.
PERINTAH INPUT DAN OUTPUT
RECURSION ( rekursi ).
mencetak Total kedua bilangan tersebut
Praktikum KBP 2 Array.
09.6 Hari-9.
Perulangan (looping) Oleh: Sri Supatmi.
Arithmetic Expression
Bab 08 Menghitung Total Data yang Diinput Dari Keyboard
Introduction 04 to Algorithm LOOP sebagai pembentuk kerangka dasar
Data dan Struktur Data.
Soal-soal.
Bab 03 Variabel dan Tipe Data
contoh aplikasi array 2 dimensi
BAB 14 RECURSION Pengertian Recursion. Recursion:
Transcript presentasi:

BAB 14 RECURSION 14.01 Pengertian Recursion. Recursion: Proses yang bersifat RECURSIVE, terjadi apabila dalam suatu fungsi ada instruksi yang mengCALL fungsi itu sendiri, atau lebih sering disebut mengcall dirinya sendiri. Contoh : Susun algoritma untuk menginput sebuah nilai integer (misal masuk ke variabel N ), kemudian hitung N! ( baca: N faktorial) 1. A. Tanpa menggunakan Fungsi #include<stdio.h> main() { int I, hasil, N; scanf(“%i”, &N); for( I=N; I >= 1; I--) { hasil = hasil * I; } printf(“%i”, hasil); } Bila N = 5, maka : N! = 5 * 4 * 3 * 2 * 1 = 120 atau : #include<stdio.h> main() { int I, hasil, N; scanf(“%i”, &N); hasil = 1; for( I=1; I <= N; I++) { hasil = hasil * I; } printf(“%i”, hasil); } Bila N = 5, maka : N! = 1 * 2 * 3 * 4 * 5 = 120

b1) Menggunakan Fungsi non recursive 14.02 B. Menggunakan Fungsi b1) Menggunakan Fungsi non recursive Cara-1 #include<stdio.h> void HITUNG(void); main() { HITUNG(); } void HITUNG(void) { int I, hasil, N; scanf(“%i”, &N); for( I=N; I >= 1; I--) { hasil = hasil * I; } printf(“%i”, hasil); Cara-2 #include<stdio.h> void HITUNG(int X); main() { int N; scanf(%i”, &N); HITUNG(N); } void HITUNG(int X) { int I, hasil; hasil = 1; for( I=X; I >= 1; I--) { hasil = hasil * I; } printf(“%i”, hasil);

#include<stdio.h> void HITUNG(int X); int hasil; main() { int N; 14.03 Cara-3 #include<stdio.h> void HITUNG(int X); int hasil; main() { int N; scanf(%i”, &N); HITUNG(N); printf(“%i”, hasil); } void HITUNG(int X) { int I; hasil = 1; for( I=X; I >= 1; I--) { hasil = hasil * I; } Cara-4 #include<stdio.h> void HITUNG(int X); main() { int FACT, N; scanf(%i”, &N); FACT = HITUNG(N); printf(“%i”, FACT); } void HITUNG(int X) { int I, hasil; hasil = 1; for( I=X; I >= 1; I--) { hasil = hasil * I; } return(hasil);

#include<stdio.h> void HITUNG(int X); main() { int N; 14.04 Cara-5 #include<stdio.h> void HITUNG(int X); main() { int N; scanf(%i”, &N); printf(“%i”, HITUNG(N)); } void HITUNG(int X) { int I, hasil; hasil = 1; for( I=X; I >= 1; I--) { hasil = hasil * I; } return(hasil); b2) Menggunakan Fungsi yang bersifat recursive Cara-1 #include<stdio.h> void HITUNG(int n); main() { int N; scanf(%i”, &N); printf(“%i”, HITUNG(N)); } void HITUNG(int n) { int x,y; if(n == 0) return(1); x = n - 1; y = HITUNG(x); return(n * y);

HITUNG(n) dimana n = 5 - call HITUNG(n) dimana n = 4 - call 14.05 HITUNG(n) dimana n = 5 - call return n * y 5 * 24 = 120 HITUNG(n) dimana n = 4 - call return n * y 4 * 6 = 24 HITUNG(n) dimana n = 3 - call return n * y 3 * 2 = 6 HITUNG(n) dimana n = 2 - call return n * y 2 * 1 = 2 HITUNG(n) dimana n=1 - call return n * y 1 * 1 = 1 HITUNG(n) - dimana n = 0 - return 1

5 5 4 n x 4 3 n x 3 2 n x 2 1 n x 1 n x 14.06 Program Utama FungsiHITUNG( ) HITUNG(N) dimana N=5, Nilai N diterima oleh n 5 5 4 Y = HITUNG(x) N n x Cetak : HITUNG(N) HITUNG(x) dimana x=4 Nilai 4 diterima oleh n 4 3 Y = HITUNG(x) n x HITUNG(x) dimana x = 3 3 2 Y = HITUNG(x) n x HITUNG(x) dimana x=2 2 1 Y = HITUNG(x) n x HITUNG(x) dimana x=1 1 Y = HITUNG(x) n x HITUNG(x) dimana x=0 return(1) n return(1) ke fungsi sebelumnya return(1*1 = 1) ke fungsi sebelumnya return(2*1 = 2) ke fungsi sebelumnya return(3*2 = 6) ke fungsi sebelumnya return(4*6 = 24) ke fungsi sebelumnya return(5*24 = 120) ke Program Utama

1 2 6 24 120 #include<stdio.h> int HITUNG(int n); main() 14.07 #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { int x, y; if(n == 0) return(1); x = n - 1; y = HITUNG(x); printf("\n%i", n*y); return(n * y); Sebelum keluar dari fungsi HITUNG terlebih dahulu mencetak nilai yang di return yaitu n*y 1 2 6 24 120 Dicetak dalam fungsi HITUNG dengan: printf(“\n”, n*y); Dicetak dalam program Utama dengan : printf(“\n”, HITUNG(N);

#include<stdio.h> int HITUNG(int n); main() { int N; Perhatikan kembali : 14.08 #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { int x, y; if(n == 0) return(1); x = n - 1; y = HITUNG(x); return(n * y); Bandingkan dengan : Cara-3 Cara-2 #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { int y; if(n == 0) return(1); y = HITUNG(n-1); return(n * y); #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { int x, y; if(n == 0) return(1); else { x = n - 1; y = HITUNG(x); return(n * y);

#include<stdio.h> int HITUNG(int n); main() { int N; 14.09 Cara-4 #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { if(n == 0) return(1); return(n * HITUNG(n-1); Cara-5 #include<stdio.h> int HITUNG(int n); main() { int N; scanf("%i", &N); printf("\n%i", HITUNG(N)); } int HITUNG(int n) { return(n == 0 ? 1 : n * HITUNG(n-1) ); }

Tercetak : atrakaJ atau : a t r a k a J 14.10 Input : Jakarta Tercetak : atrakaJ atau : a t r a k a J #include<stdio.h> #include<conio.h> void KETIK(char C); main() { char X; X = getche(); KETIK(X); printf("% c", X); } void KETIK(char C) { C = getche(); if(C == '\r') { printf("\n"); return; KETIK(C); printf("%c ", C); Cara-1

Misal yang diketik : ABCD<Enter> 14.11 Misal yang diketik : ABCD<Enter> Dalam Program Utama X= getche( ) --> X berisi ‘A’ KETIK(C) printf(“%c”, X); tercetak : A dan proses selesai Dalam fungsi KETIK( ) C=getche( )--> C berisi ‘B’ KETIK(C) printf(“%c”,C); tercetak : B return Dalam fungsi KETIK( ) C=getche( )--> C berisi ‘C’ KETIK(C) printf(“%c”, C); tercetak : C return Dalam fungsi KETIK( ) C=getche( )--> C berisi ‘D’ KETIK(C) printf(“%c”, C); tercetak : D return Dalam fungsi KETIK( ) C=getche( )-- > C berisi ‘ \r’ return Maka tercetak : D C B A

14.10

14.10

14.10