Iterasi dan rekursif


Iterasi

pada iterasi kita menggunakan perulangan untuk mencari hasilnya. perhatikan coding berikut.

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;

int main () {
printf(“Program Iterasi Perpangkatan \n\n”);
int x,a,hasil;

printf (“masukkan nilai x = “); scanf(“%d”,&x);
printf(“masukkan nilai a = “); scanf(“%d”, &a);

for (int i=0; i<a; i++)

if(i==0){

hasil= x*x;
}else{

hasil=hasil * x;

}

cout<<“hasil pemangkatan “<<x <<“^” <<a <<” = ” <<hasil;

getch( );

pada coding yang di beri warna merah merupakan iterasi/perulangan yang beefungsi untuk mencari nailai pemangkatan. dimana x merupakan nilai variabel dan a merupakan pangkatnya. Xa

nah kemudian diatas dapat kita lihat untuk menampilkan text menggunakan printf dan meminta input dengan perintah scanf. yang mana anda juga bisa menggunakan fungsi cout<< dan cin>>. pada printf dan scanf (agak ribet) mesti mengunakan code seperti %d setiap ada variabel yang ingin digunakan contoh scanf(“%d”,&x);

flowchart perpangkatan

Rekursif

pada rekursif kita menggunakan fungsi yang memanggil dirinya sendiri untuk mencari hasilnya sampai memenuhi kondisi. perhatikan coding berikut.

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;

int pangkat (int j, int k) { //membuat function/fungsi pangkat
int hasil;
if (k==0) { hasil=1; }
else {
hasil =j*pangkat(j,k-1);
}
return(hasil);
}

int main(){ //program utama
printf(“Program Iterasi Perpangkatan \n\n”);
int x,a,hasil;

printf (“masukkan nilai x = “); scanf(“%d”,&x);
printf(“masukkan nilai a = “); scanf(“%d”, &a);

cout<<“hasil pemangkatan “<<x <<“^” <<a <<” = ” <<pangkat(x,a);
}

Yang paling penting adalah fungsi pangkat yang diwarnai merah
Fungsi ini digunakan mencari hasil pemangkatan,
penjelasan coding

int hasil; (digunakan untuk menampung hasil dari pemangkatan)

if (k==0) { hasil=1; } jika k =0 maka hasilnya pemangkatannya 1, j0 =1

else {
hasil =j*pangkat(j,k-1); }
jika k =bukan 0 misalnya 3 (33) maka hasilnya 3*pangkat(3,2) nah nilai k nya masih 2 (belum 0) maka akan di lakukan pemanggilan fungsi pangkat sampai nilai k nya 0
jadi nanti bentuk proses pencariannya begini

pangkat(3,3) = 3*pangkat(3,2)= 3*3*pangkat(3,1)= 3*3*3 pangkat(3,0)= 3*3*3*1

Dan terakhir
return(hasil); untuh menampilkan hasil dari pemangkatan yang di letakkan pada variabel hasil.

Kekurangan perulangan rekursif :

  • Tidak bisa melakukan nested loop atau looping bersarang.
  • Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
  • Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overum).
  • Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.

contoh soal :

Mr.X membuat 2 macam boneka A dan B. Boneka A memerlukan bahan 10 blok B1 dan 2 blok B2, sedangkan boneka B memerlukan bahan 5 blok B1 dan 6 blok B2. Berapa jumlah boneka yang dapat dihasilkan bila tersedia 80 blok bahan B1 dan 36 blok bahan B2. (dimana iterasinya)
Variabel yang dicari adalah jumlah boneka, anggap:
x1 adalah jumlah boneka A
x2 adalah jumlahboneka B

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s