Iterasi dan Rekursi C++ Disertai Contoh, Tugas & Jawaban - TeachMeSoft

Iterasi dan Rekursi C++ Disertai Contoh, Tugas & Jawaban

Iterasi dan Rekursi C++ Disertai Contoh, Tugas & Jawaban


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
Diketahui algoritma program untuk menampilkan bilangan dari 0 hingga k, dengan k sembarang.
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 :
Running program Iterasi sederhana


Contoh ke-2 Menghitung Faktorial dengan menggunakan iterasi
Dibawah ini terdapat program untuk menghitung Faktorial dengan menggunakan iterasi. Bagaimana algoritmanya?
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 :
Running program Menghitung Faktorial dengan menggunakan iterasi


Contoh ke-3 Menampikan deret fibonaci dengan iterasi
Berikut disajikan algoritma untuk 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

  1. Buat algoritma dan program yang mempunyai fungsi untuk melakukan konversi bilangan bulat menjadi huruf dengan ucapan.
    Misalnya : 
    1. 10 : Sepuluh
    2. 12 : Duabelas
    3. 1234 : Seribu dua ratus tiga puluh empat
  2. Buatlah soal nomor 3 diatas kedalam fungsi rekursif


Jawaban 


Pending




Disqus comments