Halloo assalamualaikum.wr.wb
Minggu lalu kita sudah membahas materi mengenai fungsi/function dan untuk kali ini kita akan membahas materi fungsi rekursi, ada beberapa study kasus yang akan kita coba selesaikan, mengenai fungsi rekursi.
Sebelumnya apa sih fungsi rekursi itu.?
Untuk menjawab pertanyaan diatas simak penjelasan singkatnya dibawah ini yaa. . . .
FUNGSI REKURSI
Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini.
Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan langkahlangkah sejenis. Contoh paling sederhana dari proses rekursi adalah menghitung nilai faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis sebagai :
0! = 1
N! = N x (N-1)!, Untuk N > 0
yang secara notasi pemrograman bisa ditulis sebagai:
FAKTORIAL (0) = 1 1)
FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)
Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation), yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang lebih kecil. Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi tersebut tidak bisa dihitung secara eksplisit.
Proses rekursi akan selesai , ini terletak pada kondisi pernyataan if-nya. Jika pernyataan if menjadi FALSE maka akan menghentikan proses rekursi
Prinsif dan proses rekursi:
Memiliki kasus non rekursi(sederhana)
Kasus awal diarahkan menuju kasus sederhana
Mendefinisikan proses rekurs
Praktikum 1
Studi Kasus
Menentukan bilangan dasar yang akan dipangkatkan dan menentukan pangkat yang akan diterapkan pada bilangan dasar tersebut.
#include<stdio.h>
#include<conio.h>
int pangkat(int x, int y);
main()
{
int x,y;
printf(" Masukan Bilangan Yang Akan Dipangkatkan = ");
scanf("%d",&x);
printf("\n Pangkat Bilangan = ");
scanf("%d",&y);
printf("\n Hasil Bilangan %d Pangkat %d Adalah %d",x,y,pangkat(x,y));
getch();
return 0;
}
int pangkat(int x, int y)
{
if(y==0)
{
return 1;
}
else
{
return x*pangkat (x,y-1);
}
}
Pembahasan :
Program diatas dibuat untuk menentukan nilai perpangkatan dari bilangan yang kita inputkan. Jadi jadi kita inputkan bilangan yang akan dipangkatkan, contohnya kita masukan bilangan 3 dan kita masukan pangkat nya 3, maka bilangan nya 3 pangkat 3 dan hasilnya 3x3x3 = 27.
Praktikum 2
Study Kasus
#include<iostream.h>
int factorial (int a)
{
if(a>0){
cout<<a<<" ";
return(a*factorial(a-1));
}
else
return 1;
}
int main()
{
int a;
int factorial(int a);
cout<<"program menampilkan deret nilai faktorial"<<endl;
cout<<"masukan nilai faktorial:";
cin>>a;
cout<<endl;
cout<<"\n\nRekursif-> Hasil Perkalian semua nilai dari"<<a<<"!= "<<factorial(a);
return 0;
}
Hasil Runing :
Program diatas merupakan program untuk menampilkan runtutan dan jumlah dari bilangan sebelumnya dengan demikian kita dapat mengetahui deret bilangan sebelumnya dengan melakukan faktorisasi dari bilangan tersebut, hasil dari penjumlahan deret bilangan tersebut dapat di lakukan dengan sebutan factorial. Contoh kita masukan nilai faktorialnya 3, maka 3 2 1, dan setelah dihitung maka jumlah dari bilangan tersebut adalah 3x2x1=6.
Praktikum 3
Study Kasus 3
#include<iostream.h>
#include<conio.h>
int fibo(int i)
{
if(i==0)
return 0;
else if(i==1)
return 1;
else
return fibo(i-1)+fibo(i-2);
}
int main()
{
int bil,i;
cout<<"\t Fungsi Rekrusif Bilangan Fibonaci"<<endl;
cout<<"\t==================================="<<endl;
cout<<"\nMasukan bilangan:";
cin>>bil;
for(i=1; i<=bil;i++)
cout<<" "<<fibo(i);
cout<<"\n Fibonaci("<<bil<<")="<<fibo(bil);
getch();
return 0;
}
Hasil Runing :
Pembahasan :
Program diatas dibuat untuk menghitung bilangan fobonaci dengan cara meginputkan bilangan yang akan dihitung bilangan fibonaci nya
Latihan 1
Study Kasus
Program berikut ini berfungsi untuk membalikan urutan deret bilangan yang diinput menggunakan fungsi rekursi.
#include<stdio.h>
#include<conio.h>
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml=0;
char bil[MAX];
printf("\nProgram Pembalik Angka Deret\n");
printf("\nMasukan bilangan deret yang dibalikan = ");
gets(bil);
for (i=0;bil[i];i++)
{
jml=jml++;
}
printf("\n");
printf("Maka hasilnya adalah= ");
for(j=jml-1;j>=0;j--)
{
printf("%c",bil[j]);
}
printf("\n");
getch();
return 0;
}
Hasil Runing :
Pembahasan :
Program diatas berfungsi untuk menampilkan deret anga yang sudah dibalikan susunann nya, contoh : 1 2 3 4 5, maka setelah dibalik hasilnya akan menjad seperti ini : 5 4 3 2 1.
Latihan 2
Study Kasus
Menampilkan deret fibonanci dengan memberikan batasan akhir dari sebuah angka fibonanci dengan menggunakan statement #define variable.
#include<iostream.h>
#include<conio.h>
#define MAX 5
int main()
{
int i;
long fibo[MAX];
fibo[1]=1;
fibo[2]=1;
for(i=3;i<=MAX;i++)
{
fibo[3]=fibo[1]+fibo[2];
fibo[1]=fibo[2];
fibo[2]=fibo[3];
cout<<fibo[3]<<endl;
}
getch();
return 0;
}
Hasil Runing :
Pembahasan :
Program diatas bisa dugunakan untuk menampilkan deret fibonanci dengan memberikan batasan akhir dari sebuah angka fibonanci dengan menggunakan batasan akhir. Jadi jika kita tentukan batasan akhirnya 5 maka bilangan fibonaci yang akan ditampilkan berjumlah 5 buah bilanngan fibonaci.
Latihan 3
Study Kasus
Menentukan bilangan dasar yang akan dipangkatkan dan menentukan pangkat yang akan di tetapkan pada bilangan dasar tersebut.
#include<stdio.h>
#include<conio.h>
int pangkat(int x, int y);
main()
{
int x,y;
printf(" Masukan Bilangan Yang Akan Dipangkatkan = ");
scanf("%d",&x);
printf("\n Pangkat Bilangan = ");
scanf("%d",&y);
printf("\n Hasil Bilangan %d Pangkat %d Adalah %d",x,y,pangkat(x,y));
getch();
return 0;
}
int pangkat(int x, int y)
{
if(y==0)
{
return 1;
}
else
{
return x*pangkat (x,y-1);
}
}
Hasil Runing :
Pembahasan :
Program diatas dibuat untuk menentukan nilai perpangkatan dari bilangan yang kita inputkan. Jadi jadi kita inputkan bilangan yang akan dipangkatkan, contohnya kita masukan bilangan 4 dan kita masukan pangkat nya 2, maka bilangan nya 4 pangkat 2 dan hasilnya sama dengan 4x4=16.






Kenapa artikelnya ngeblok???
BalasHapus