Anda di halaman 1dari 15

14.

01

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 :

1. Susun algoritma untuk menginput sebuah nilai


integer (misal masuk ke variabel N ), kemudian
hitung N! ( baca: N faktorial)

A. Tanpa menggunakan Fungsi

#include<stdio.h> Bila N = 5,
main() maka : N! =
{ int I, hasil, N; 5 * 4 * 3 * 2 * 1 = 120
scanf(“%i”, &N);
for( I=N; I >= 1; I--)
{ hasil = hasil * I; }
printf(“%i”, hasil);
}

atau :
#include<stdio.h> Bila N = 5,
main() maka : N! =
{ int I, hasil, N; 1 * 2 * 3 * 4 * 5 = 120
scanf(“%i”, &N);
hasil = 1;
for( I=1; I <= N; I++)
{ hasil = hasil * I; }
printf(“%i”, hasil);
}
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);
}
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);
}
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);
}
14.05

HITUNG(n) dimana n = 5
-
-
call HITUNG(n) dimana n = 4
- -
- -
- call HITUNG(n) dimana n = 3
- - -
- - -
- - call HITUNG(n) dimana n = 2
- - - -
- - - -
- - - call HITUNG(n) dimana n=1
- - - - -
- - - - -
- - - - call HITUNG(n)
- - - - - - dimana n = 0
- - - - - -
- - - - -
- -
- - - return 1
- -
- - - - -
- - - - return n * y
- - - - 1 * 1 = 1
- - - -
- - - return n * y
- - - 2 * 1 = 2
- - return n * y
- - 3 * 2 = 6
- -
- return n * y
- 4 * 6 = 24
-
return n * y
5 * 24 = 120
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(x) dimana x=4 Nilai 4 diterima oleh n
HITUNG(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 0 Y = HITUNG(x)
n x

HITUNG(x) dimana x=0


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


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); Sebelum keluar
dari fungsi HITUNG
printf("\n%i", n*y);
terlebih dahulu
return(n * y); mencetak nilai
} yang di return
yaitu n*y

1
2
6 Dicetak dalam fungsi HITUNG
24 dengan: printf(“\n”, n*y);
120
120 Dicetak dalam
program Utama dengan :
printf(“\n”, HITUNG(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-2 Cara-3

#include<stdio.h> #include<stdio.h>
int HITUNG(int n); int HITUNG(int n);
main() main()
{ int N; { int N;
scanf("%i", &N); scanf("%i", &N);
printf("\n%i", printf("\n%i", HITUNG(N));
HITUNG(N));
}
} int HITUNG(int n)
int HITUNG(int n) { int y;
{ int x, y; if(n == 0)
if(n == 0) return(1);
return(1); y = HITUNG(n-1);
else return(n * y);
{ x = n - 1; }
y = HITUNG(x);
return(n * y);
}
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) ); }
14.10

Input :Jakarta
Tercetak : atrakaJ atau : a t r a k a J

Cara-1
#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);
return;
}
14.11
Misal yang diketik : ABCD<Enter>
Dalam Program Utama

X= getche( ) --> X berisi


‘A’
Dalam fungsi KETIK( )
KETIK(C)
C=getche( )--> C berisi ‘B’

KETIK(C) Dalam fungsi KETIK( )

C=getche( )--> C berisi ‘C’

KETIK(C)
Dalam fungsi KETIK( )

C=getche( )--> C berisi ‘D’

KETIK(C) Dalam fungsi KETIK( )


C=getche( )-- > C berisi ‘ \r’
return

printf(“%c”, C);
tercetak : D

return

printf(“%c”, C);
tercetak : C

return

printf(“%c”,C);
tercetak : B

return

printf(“%c”, X);
tercetak : A

dan proses selesai

Maka tercetak : D C B A
14.10
14.10
14.10

Anda mungkin juga menyukai