Rekursif merupakan salah satu metode algoritma yang kerap digunakan dalam membuat perulangan, seperti halnya iterasi for, repeat .. until, do.. while, dsb. Perbedaannya adalah dalam sifatnya yang memanggil dirinya sendiri, baik secara langsung ataupun melalui metode yang lainnya. Ciri masalah yang dapat diselesaikan secara rekursif adalah masalah itu dapat direduksi menjadi satu atau lebih masalah-masalah serupa yang lebih kecil. Secara umum metode algoritma rekursi terdiri atas dua komponen utama, yaitu :
- Bagian induksi (Recursive Step), merupakan satu atau lebih kasus yang menyelesaikan masalah serupa namun dengan ukuran data ataupun metode yang lebih sederhana
- Bagian penyetop (Basis Step), merupakan satu atau lebih kasus yang paling sederhana dan solusinya tidak perlu lagi terjadi rekursi
1. Program FAKTORIAL
#include<stdio.h>
int faktorial(int n)
{
if (n == 0)
{return (1);}
else
{return n*faktorial(n-1);}
}
int main()
{
int x;
printf("angka ");scanf("%d",&x);
printf("%d ",faktorial(x));
return 0;
}
2. Program FOBONNACI
#include<stdio.h>
int fibonacci(int n)
{
if (n == 0)
{return(1);}
else
if (n == 1)
{return(1);}
else
{return fibonacci(n - 1) + fibonacci(n - 2);}
}
int main()
{
int x;
int i;
printf("angka ");scanf("%d",&x);
for (i = 0;i<x;i++)
printf("%d ",fibonacci(i));
return 0;
}
3. Program Pangkat
#include<stdio.h>
int xdany(int a, int b)
{
if (b == 0)
{return (1);}
else
{return a*xdany(a,b-1);}
}
int main()
{
int a,b;
printf("a ");scanf("%d",&a);
printf("b ");scanf("%d",&b);
printf("%d ",xdany(a,b));
return 0;
}
terimakasih mas
ReplyDeleteBermanfaat untuk tugas saya gan. Tq
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteminta tolong mas.ini program saya kok syntak error terus ya.
ReplyDelete#include
#include
int factorial(int);
main()
{
int f;
int n;
clrscr();
printf ("Program Menghitung Faktorial \n\n");
printf ("Masukkan Suatu Bilangan Bulat : ");
scanf ("%d", &n);
if (n < 0)
{
printf ("Bilangan Harus Positif!!!");
}
else
{
f = factorial(n);
printf ("Factorial %d! adalah : %d", n, f);
}
getch();
}
int factorial(int N)
{
int F;
if (N = 0)
{
return (1);
}
else
{
F = N * factorial (N-1);
return (F);
}
}