1. Apa perbedaan fungsi Rekursif dengan Fungsi Iteratif?Jawab :
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)
1 | 1. 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. |
1 | 2. Function S(input n:integer) integer |
2 | Deskripsi |
3 | If (n==1) Then |
4 | return (2) |
5 | Else |
6 | return (2*n + S(n-1)) |
7 | Endif |
01 | 3. Faktorial rekursif |
02 | int 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 |
11 | int fact_it ( int n) |
12 | { |
13 | int temp; |
14 | temp = 1; |
15 | if (n < 0) |
16 | return 0; |
17 | else if (n == 0) |
18 | return 1; |
19 | else if (n == 1) |
20 | return 1; |
21 | Else |
22 | for ( int i=2; i<=n; ++i) |
23 | temp = temp * i; |
24 | return (temp); |
25 | } |
1. Apa perbedaan fungsi Rekursif dengan Fungsi Iteratif?Jawab :
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
1 | 1. Persamaan : |
2 | Persamaan |
3 | - Sama-sama merupakan bentuk perulangan. |
4 | - Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang. |
1 | 2. Algoritma : |
2 | Function S(input n:integer) integer |
3 | Deskripsi |
4 | If (n==1) Then |
5 | return (1) |
6 | Else |
7 | return (n + S(n-1)) |
8 | Endif |
01 | 3. Fibonaci rekursif : |
02 | int 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 : |
10 | int 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 | } |
- Buatlah program dalam bentuk class yang mempunyai bentuk rekursif untuk menghitung dengan rumus fungsi :
- permutasi
- kombinasi
- 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;
}