Berikut adalah program C++ rekursif deret Fibonacci :
/*
Fungsi rekursif – Deret Fibonacci
Visual Studio Express 2012
N.N. Blog
*/
#include <iostream>
using namespace std;
#include <conio.h>
int fibo(int i)
{
if(i==0)
return 0;
else if(i==1)
return 1;
else
//fungsi rekursif
return fibo(i-1)+fibo(i-2);
}
int main()
{
int bil;
cout<<"\tFungsi Rekursif Bilangan Fibonacci"<<endl;
cout<<"\t=================================="<<endl;
cout<<"\nMasukkan bilangan : ";
cin>>bil;
//pemanggilan
fungsi
cout<<"Fibonacci("<<bil<<") = "<<fibo(bil);
_getche();
return EXIT_SUCCESS;
}
Penjelasan
int fibo(int i)
{
if(i==0)
return 0;
else
if(i==1)
return 1;
else
//fungsi rekursif
return fibo(i-1)+fibo(i-2);
}
Seperti pada output apabila
dimasukkan angka 4, maka,
Jadi Fibonacci (4) adalah 3
Output
Program C++
untuk membuat Deret Fibonacci
Bilangan
Fibonacci dalam
matematika yaitu barisan yang didefinisikan secara rekursif
sebagai berikut:
barisan ini
berawal dari 0 dan 1, kemudian angka berikutnya didapat dengan cara menambahkan
kedua bilangan yang berurutan sebelumnya. Dengan aturan ini, maka barisan
bilangan Fibonaccci yang pertama adalah:
0, 1, 1, 2,
3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765,
10946...
Angka 1 = 0
Angka ke-2 =
1
Angka ke-3=
angka 1+ Angka ke-2
Angka ke-4 =
angka 2+ Angka ke-3
dst….
Barisan
bilangan Fibonacci dapat dinyatakan sebagai berikut:
Fn
= (x1n – x2n)/ sqrt(5)
dengan
- Fn adalah bilangan Fibonacci ke-n
- x1 dan x2 adalah penyelesaian persamaan x2 – x – 1 = 0.
Perbandingan
antara Fn+1 dengan Fn hampir selalu sama untuk sebarang
nilai n dan mulai nilai n tertentu, perbandingan ini nilainya tetap.
Perbandingan itu disebut rasio emas yang nilainya mendekati 1,618.
Codingan
program untuk deret Fibonacci dapat saya buat sebagai berikut :
#include
<iostream.h>
int suku, a, b, c;
int main()
{
cout<<"Membuat Deret Fibonacci\n";
cout<<"Masukkan nilai suku ke-: ";cin>>suku;
cout<<"Bilangannya adalah: \n";
a=0;b=1;
cout<<a<<endl<<b<<endl;
for(int i=3; i<=suku; i++)
{
c = a + b;
a = b;
b = c;
cout<<c<<endl;
}
return 0;
}
int suku, a, b, c;
int main()
{
cout<<"Membuat Deret Fibonacci\n";
cout<<"Masukkan nilai suku ke-: ";cin>>suku;
cout<<"Bilangannya adalah: \n";
a=0;b=1;
cout<<a<<endl<<b<<endl;
for(int i=3; i<=suku; i++)
{
c = a + b;
a = b;
b = c;
cout<<c<<endl;
}
return 0;
}
Bila pada posting sebelumnya saya menggunakan
fungsi iteratif, sekarang saya menggunakan fungsi rekursif untuk mencari urutan
fibonacci. Dengan fungsi rekursif, apabila bilangan yang dicari urutannya
kecil, maka lebih baik menggunakan fungsi rekursif ini. Berikut ini kodenya:
#include <stdio.h>
#include <conio.h>
int fibonacci(int n);
void main()
{
int bil,urfib,ulangi;
do
{
clrscr();
printf("Bilangan fibonacci urutan ke? ");
scanf("%d",&bil);
urfib=fibonacci(bil);
printf("\nUrutan fibonacci ke %d, adalah %d",bil,urfib);
printf("\n\nApakah anda ingin mengulangi?");
printf("\n1. YA");
printf("\n2. TIDAK (keluar) ");
scanf("%d",&ulangi);
}while(ulangi==1);
}
int fibonacci(int n)
{
int fibonac;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
fibonac=fibonacci(n-1)+fibonacci(n-2);
return (fibonac);
}
#include <stdio.h>
#include <conio.h>
int fibonacci(int n);
void main()
{
int bil,urfib,ulangi;
do
{
clrscr();
printf("Bilangan fibonacci urutan ke? ");
scanf("%d",&bil);
urfib=fibonacci(bil);
printf("\nUrutan fibonacci ke %d, adalah %d",bil,urfib);
printf("\n\nApakah anda ingin mengulangi?");
printf("\n1. YA");
printf("\n2. TIDAK (keluar) ");
scanf("%d",&ulangi);
}while(ulangi==1);
}
int fibonacci(int n)
{
int fibonac;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
fibonac=fibonacci(n-1)+fibonacci(n-2);
return (fibonac);
}
Sangat berguna sekali Terima Kasih
BalasHapusJadi Kesimpulan programnya bagaimana?
BalasHapus