Anda di halaman 1dari 5

1.

Pembahasan
1. Program 1 :
#include <stdio.h>
void tidak_berhenti();
main(){
tidak_berhenti();
}
Penjelasan : program main diatas memanggil fungsi tidak_berhenti().
void tidak_berhenti(){
printf("Ctril+Break untuk berhenti. \n");
tidak_berhenti();
}
Penjelasan : fungsi diatas memanggil fungsi dirinya sendiri maka dari
itu terus looping tak berhenti hingga user menekan tombol ctrl+break
untuk berhenti.
2. Program 2 :
void rekursi(int n); // memperkenalkan fungsi dahulu jika fungsi
dibawah main program
main(){
int x=3;
rekursi(x);
}
Penjelasan :
Program main yang menciptakan variable x dengan nilai 3 lalu
memanggil fungsi rekursi() dengan parameter x.
void rekursi(int n){
static int j=0;
if(n<=0) return;
printf("rekursi ke-%d\n",++j); rekursi(n-1);
}
Penjelasan :
Kode diatas merupakan fungsi dengan parameter int n yang di isi nilai x
dari fungsi main/program utama, lalu fungsi ini menjalankan dirinya
sendiri selama n<=0 bernilai false, mencetak rekursi ke j++,dan tiap
looping n-1 dan berhenti jika sudah n<=0.
3. Program 3 :
long faktorial(long a);
Penjelasan :
Memperkenalkan fungsi yang akan digunakan di main, karena fungsi di
tulis dibawah main().
int main(){
int n;
long hasil;
printf("menghitung N faktorial (N!) \n");
printf("masukan hasil :"); scanf("%d",&n);
hasil=faktorial(n);

printf("%d!=%d",n,hasil);
return 0;
}
Penjelasan :
Diatas merupakan program utama yang berisi pembuatan variabel n dan
hasil, untuk menghitung faktorial dari nilai yang akan dimasukan ke
variabel n. Hasil faktorial dimasukan ke variablel hasil , lalu tampilkan.
Karena fungsi menggunakan tipe data maka harus ada return di akhir
fungsi.
long faktorial(long a){
if(a>1){
return(a*faktorial(a-1));
}else {
return (1);
}
}
Penjelasan :
kode diatas merupakan fungsi yang akan menjalankan perhitungan
faktorial jika nilai yang di inputkan lebih dari 1 maka jalankan terus fungsi
yang memanggil diri sendiri hingga berhenti pada a tidak lebih dari 1,
ketika itu maka return 1.
long factorial(long a);
int main()
{
int n;
long hasil;
printf("Menghitung N Faktorial(N!)\n");
printf("Masukkan N : ");
cin >> n;
cout << endl;
for(int z =1; z<=n; z++)
{
hasil = factorial(z);
cout << z <<"!" << "=" << hasil <<endl;
}
return 0;
}
long factorial (long a)
{
if(a>1)
return(a*factorial(a-1));
else
return(1);
}
Penjelasan :
program diatas sama dengan perhitungan faktorial yang sebelumnya
hanya saja untuk pemfaktoranya menggunakan perulangan hingga
hasil yang di keluarkan merupakan faktorial dari deret 1 sampai z.

int urut(int a);


main(){
int angka;
cout<<"masukan nilai n : ";
cin>>angka;
urut(angka);
}
Penjelasan :
kode diatas untuk memasukan nilai n ke variable n.
int urut(int a){
if(a>=0){
cout<<a<<" ";
a-=1;
return urut(a);
}else{
return 0;
}
}
Penjelasan :
kode diatas merupakan fungsi yang menjalankan, jika nilai yang
dimasukan ke dalam parameter a lebih dari sama dengan 0 maka
tampilkan nilai a, lalu a -1 , kembali memanggil fungsi dirinya sendiri
hingga kondisi bernilai false lalu return 0.

2. Kesimpulan
Rekursif sangat memudahkan untuk memecahkan masalah yang
kompleks. Ciri masalah yang dapat diselesaikan secara rekursif adalah
masalah itu dapat direduksi menjadi satu atau lebih masalah masalah
serupa yang lebih kecil.
3. Tugas
1. Kode :
. #include<iostream.h>
void rekursi(int n);
main() {
int x;
cout<<"Masukan N = ";
cin>>x;
rekursi(x);
cout<<endl;
}
void rekursi(int n) {
static int j=0;
if(n<j)
return;
cout<<n--<<"\t";
rekursi(n);

2. Kode :
. #include<iostream.h>
void rekursi(int n);
main() {
int x;
cout<<"Masukan N = ";
cin>>x;
rekursi(x);
cout<<endl;
}
void rekursi(int n) {
static int j=-1;
if(n<=j)
return;
cout<<++j<<"\t";
rekursi(n);
}

3. kode :
#include<iostream>
void balik_kata(char kata[30], int x) {
if(x>=0) {
cout<<kata[x];
x -= 1;
balik_kata(kata, x);
} else
return;
}
void main() {
char k[30];
int p_string;
cout<<"Masukan kata : ";

cin>>k;
p_string = strlen(k)-1;
balik_kata(k, p_string);
}

4. Listing