DAFTAR ISI
Materi
Seperti yang sudah dibahas pada pertemuan sebelumnya, rekursif adalah fungsi yang memanggil dirinya sendiri, rekursif menggunakan pernyataan pilihan (if, if..else, switch). Sedangkan iterasi adalah proses pengulangan dengan menggunakan perintah perulangan (for, while dan do..while).Iterasi dan rekursif memasukkan unsur pengulangan: iterasi menggunakan perintah pengulangan secara ekspisit, rekursif memasukkan pengulangan melalui pemanggilan fungsi secara berulang. Iterasi dan rekursif memasukkan tes penghentian: penghenian iterasi pada kondisi looping yang bernilai salah, penghentian rekursif pada saat kondisi dasarnya terpenuhi.
Iterasi dengan pengulangan yang dikendalikan oleh counter dan rekursi secara bertahap mendekati penghentian: Iterasi terus memodifikasi counter sampai counter mengasumsikan nilai yang membuat kondisi loop berikutnya gagal; rekursi terus memanggil dirinya sendiri menggunakan masalah yang ada sampai keadaan dasar tercapai.
Baik pada iterasi maupun rekursif dapat terjadi kondisi pengulangan yang tidak berhenti: kondisi loop tidak berhenti pada iterasi terjadi pada saat tes kondisi lanjut atau tidaknya perulangan tidak pernah bernilai salah; sedangkan kondisi loop tidak berhenti pada rekursif jika langkah rekursif tidak mengurangi masalah pada setiap pemanggilan fungsi itu sendiri, sehingga keadaan dasar tidak pernah tercapai.
Rekurisif mempunyai banyak nilai negatif. rekursif mempunyai mekanisme pemanggilan method berulang, dan konsekuensinya terjadi overhead. Mekanisme ini juga akan mempengaruhi kerja sistem karena mengambil waktu dari prosesor dan ruang dari memori. Setiap pemanggilan rekursif berarti copy dari method dibuat (kenyataannya, hanya variabel method); serangkaian copy ini dapat memakan tempat di memori. Iterasi terjadi dalam method, sehingga pemanggilan method dan tambahkan memori dapat dicegah.
Mengapa menggunakan rekursif? Software engineering yang bagus adalah penting. Dalam banyak kasus, untuk kerja yang tinggi menjadi prioritas utama bahwa meskipun harus dibayar dengan harga tinggi, karena membutuhkan hardware yang besar dan handal. Dan rekursif mempunyai performance yang baik dan tinggi
Contoh Program
Contoh ke-1 Iterasi sederhana
1. Mulai
2. Masukan sebuah anga (k)
3. Untuk indeks (n) = 1 sampai dengan k, tampilkan k
4. Selesai
Source code :
#include <iostream>
using namespace std;
main (){
int n,k;
cout<<"Masukkan sebuah angka ";cin>>k;
for (n=0; n<=k; n++)
cout<<"angka = "<<n<<endl;
}
Running program :
Contoh ke-2 Menghitung Faktorial dengan menggunakan iterasi
Source code :
#include <iostream>
using namespace std;
long factorial (long a);
int main (){
int n;
long hasil;
cout<<"Menghitung N Faktorial (N!) \n";
cout<<"Masukan N : ";cin>>n;
hasil = factorial(n);
cout<<n<<" = "<<hasil<<endl;
return 0;
}
long factorial (long a)
{
long i, hasil1=1;
for (i=1; i<=a; i++)
hasil1 = hasil1*i;
return (hasil1);
}
Running program :
Contoh ke-3 Menampikan deret fibonaci dengan iterasi
Algoritma Fibonaci
1. Mulai
2. fib0 = 0, fib1 = 1
3. Selama fib0 <= batas akhir(N) kerjakan langkah 4 sampai dengan 7
4. fib = fib0+fib1
5. fib0 = fib1
6. fib1 = fib
7. Tampilkan fib1
8. Selesai
Algoritma program utama
1. Mulai
2. Masukan batas akhir nilai (N)
3. Panggil fungsi Fibonaci (N)
4. Tampilan deret Fibonaci
Source code :
#include <iostream>
using namespace std;
void Fibonaci (int N);
main (){
int N;
long hasil;
cout<<"Masukan batas akhir dari bilangan fibonaci : ";cin>>N;
Fibonaci(N);
cout<<endl;
}
void Fibonaci (int N)
{
long fib0=0, fib1=1, fib;
cout<<"Nilai Fibonaci "<<fib0<<" ";
while (fib0<= N/2)
{
fib=fib0+fib1;
fib0=fib1;
fib1=fib;
cout<<fib1<<" ";
}
}
Running program :
Tugas
- Buat algoritma dan program yang mempunyai fungsi untuk melakukan konversi bilangan bulat menjadi huruf dengan ucapan.
Misalnya : - 10 : Sepuluh
- 12 : Duabelas
- 1234 : Seribu dua ratus tiga puluh empat
- Buatlah soal nomor 3 diatas kedalam fungsi rekursif
Jawaban
Pending