Pengertian Fungsi Overloading dan Rekursif
Function overloading adalah suatu proses menggunakan nama yang sama untuk dua atau lebih fungsi. Setiap definisi ulang dari fungsi yang di overloading harus menggunakan tipe parameter, urutan parameter, atau jumlah parameter yang berbeda.
Jumlah, tipe atau urutan parameter dari suatu fungsi disebut function signature. Jika kita memiliki sejumlah fungsi nama yang sama, compiler akan mendefinisikan fungsi-fungsi tersebut berdasarkan parameternya.
Fungsi dapat dipanggil oleh program utama dan juga oleh fungsi yang lain, selain kedua metode pemanggilan tersebut, fungsi dapat juga dipanggil oleh dirinya sendiri.
Yang dimaksud disini adalah pemanggilan fungsi itu didalam fungsi itu sendiri, bukan pada fungsi yang lain. Fungsi yang melakukan pemanggilan terhadap dirinya sendiri disebut dengan fungsi rekursif.
Contoh Program
Contoh 1 Program dengan fungsi overloading
#include <iostream>
using namespace std;
int hitung(int x, int y){
return x+y;
}
int hitung(int x, int y, int z){
return x+y+z;
}
double hitung(double pi, double x){
return pi*x;
}
int main (){
cout<<"==========================================="<<endl;
cout<<"| Hasil hitung : "<<hitung(3,2)<<endl;
cout<<"| Hasil hitung : "<<hitung(5,10,2)<<endl;
cout<<"| Hasil hitung : "<<hitung(4,7)<<endl;
cout<<"==========================================="<<endl;
return 0;
}
Run program :
Contoh 2 Rekursif tak henti
#include <iostream>
using namespace std;
void Tidak_berhenti();
main()
{
Tidak_berhenti();
}
void Tidak_berhenti()
{
cout<<"Ctrl-Break untuk berhenti.\n";
Tidak_berhenti();
}
Ilustrasi Rekursif tak henti
Run program :
Contoh 3 Menghitung faktorial dengan menggunakna rekursif
Algorima fungsi factorial
1. Mulai
2. Cek jika nila (n) > 1 maka (a*factorial(a-1)); jika tidak return 1
3. Selesai
Algoritma pemanggilan fungsi hitungDeret
1. Mulai
2. Masukan nilai N
3. Panggil factorial (N), simpan dalam hasil
4. Tampilkan hasil
5. Selesai
Source code :
Run program :
#include <iostream>
using namespace std;
//Prototipe fungsi
long factorial (long a);
main(){
cout<<"=============================================\n";
cout<<"|| ||\n";
cout<<"|| MENGHITUNG (N) FAKTORIAL ||\n";
cout<<"|| MENGGUNAKAN REKURSIF ||\n";
cout<<"|| ||\n";
cout<<"=============================================\n";
int n;
long hasil;
cout<<"Masukan N : ";cin>>n;
hasil = factorial(n);
cout<<"Jumlah Deret : ";cout<<hasil<<endl;
cout<<"---------------------------------------------\n";
}
//Function
long factorial(long a){
if (a > 1)
return (a*factorial(a-1));
else
return (1);
}
Ilustrasi program :
Contoh 4 Program menghitung dan menampilkan deret fibonacci dengan rekursif
#include <iostream>
using namespace std;
int Fibonaci (int N);
main(){
cout<<"=============================================\n";
cout<<"|| ||\n";
cout<<"|| DERET FIBONACCI ||\n";
cout<<"|| MENGGUNAKAN REKURSIF ||\n";
cout<<"|| ||\n";
cout<<"=============================================\n";
int i,N;
cout<<"Masukan Batas Akhir : ";cin>>N;
for (i=0; i<=N; i++)
cout<<Fibonacci(i)<<endl;
cout<<"---------------------------------------------\n";
}
//Function
int Fibonacci(int N){
if (N < 2)
return (N);
else
return (Fibonacci(N-2)+Fibonacci(N-1));
}
Ilustrasi deret Fibonacci dengan batas akhir 5
Run program deret fibonacci dengan batas akhir 10 :
Tugas
- Buatlah algoritma dari sebuah fungsi yang menulis angka dari n ke 0 dengan menggunakan proses rekursi.
- Tuliskan algoritma sebuah fungsi untuk menulis angka dari 0 ke n dengan menggunakan proses rekursi
- Tuliskan fungsi rekursi untuk membalik suatu kalimat. Sebagai contoh kalimat 'praktikum' dibalik menjadi 'mukitkarp'. Fungsi rekursi ini menerima parameter beritpe string dan mengembalikan string hasil pembalikan.
Jawaban
Akan segera di Upload