Selasa, 01 November 2011

fungsi rekursif

1. Apa perbedaan fungsi Rekursif dengan Fungsi Iteratif?
2. Buat algoritma untuk menghitung deret S = 2+4+6+8+10+…+2n menggunakan function rekursi
3. Buatlah fungsi program untuk menghitung faktorial dengan menggunakan fungsi rekursif dan fungsi biasa(iteratif)
Jawab :
11. Perbedaan :
2- Iteratif menggunakan FOR, WHILE, DO-WHILE sedangkan rekursif hanya menggunakan IF.
3- Iteratif dapat berjalan pada program yang terdiri dari prosedur (Tidak terdapat fungsi) sedangkan rekursif merupakan fungsi.
12. Function S(input n:integer)  integer
2Deskripsi
3    If (n==1) Then
4    return (2)
5    Else
6    return (2*n + S(n-1))
7    Endif
013. Faktorial rekursif
02int Faktorial(int n)
03{
04      if ((n == 0) || (n == 1 ))
05          return (1);
06      else
07          return (n * Faktorial(n-1));
08}
09 
10  Faktorial iteratif
11int fact_it (int n)
12{
13    int temp;
14    temp = 1;
15if (n < 0)
16    return 0;
17else if (n == 0)
18    return 1;
19else if (n == 1)
20    return 1;
21Else
22    for (int i=2; i<=n; ++i)
23    temp = temp * i;
24    return (temp);
25}
Jawaban pretest kategori 1
1. Apa perbedaan fungsi Rekursif dengan Fungsi Iteratif?
2. Buat algoritma untuk menghitung deret S = 1+2+3+4+5+…+n menggunakan function rekursi
3. Buatlah fungsi program dengan menggunakan fungsi biasa(iteratif) dan fungsi rekursif untuk menampilkan jumlah nilai fibonacci
Jawab :
11. Persamaan :
2Persamaan
3- Sama-sama merupakan bentuk perulangan.
4- Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
12. Algoritma :
2Function S(input n:integer)  integer
3Deskripsi
4        If (n==1) Then
5        return (1)
6        Else
7        return (n + S(n-1))
8        Endif
013. Fibonaci rekursif :
02int fibonacci(int n){
03    if((n==1)||(n==2)){return 1;}
04    else {
05        return (fibonacci(n-1)+fibonacci(n-2));
06    }
07    }
08 
09   Fibonaci iteratif :
10int fibonacci(int n)
11{
12  int u = 0;
13  int v = 1;
14  int i, t;
15 
16  for(int i = 2; i <= n; i++)
17  {
18    t = u + v;
19    u = v;
20    v = t;
21  }
22  return v;
23}
Jawaban Postest
  1. Buatlah program dalam bentuk class yang mempunyai bentuk rekursif untuk menghitung dengan rumus fungsi :
  1. permutasi
  2. kombinasi
Gunakan fungsi rekursif faktorial!
  1. Buatlah program untuk menampilkan deret fibonacci dan jumlah nilai fibonacci dalam bentuk rekursif, buat dengan class!
Jawab :
1. Permutasi, kombinasi
#include <cstdlib>
#include <iostream>
using namespace std;
class soal1{
public:
soal1();
int faktorial(int);
int kombinasi(int,int);
int permutasi(int,int);
private:
int n,r;
};
soal1::soal1(){
cout<<"nilai n:";cin>>n;
cout<<"nilai r:";cin>>r;
cout<<"Kombinasi : "<<kombinasi(n,r);
cout<<endl<<"Permutasi : "<<permutasi(n,r);
}
int soal1::faktorial(int n)
{
if ((n == 0) || (n == 1 ))
return (1);
else
return (n * faktorial(n-1));
}
int soal1::kombinasi(int n,int r){
if(n<r){return 0;}
else return (faktorial(n)/faktorial(r)*faktorial(n-r));
}
int soal1::permutasi(int n, int r){
if(n<r){return 0;}
else return (faktorial(n) / faktorial(n-r));
}
int main(int argc, char** argv) {
soal1 a;
return 0;
}
//deret fibonacci dan paeke
#include <cstdlib>
#include <iostream>
using namespace std;
class soal2{
public:
soal2();
int fibonacci(int);
int deret();
private:
int f;
};
soal2::soal2(){
cout<<"masukkan batas suku deret :";
cin>>f;
}
int soal2::fibonacci(int n){
if((n==1)||(n==2)){return 1;}
else {
return (fibonacci(n-1)+fibonacci(n-2));
}
}
int soal2::deret(){
for(int i=1;i<=f;i++){
cout<<fibonacci(i)<<" ";
}
cout<<endl<<"jumlah nilai fibonacci dari "<<f<<" :"<<fibonacci(f);
}
int main(int argc, char** argv) {
soal2 a;
a.deret();
return 0;
}