MODUL STRUKTUR DATA REKURSIF DENGAN BAHASA C/C++

-Luntas Ilmu-  selamat pagi teman kembali lagi mari kita belajar struktru data dengan metode rekursif dan di implementasikan menggunakan bahasa c/c++ cukup mudah sebernya rekursif ini diantara ilmu yang ada di struktur data :D . Pengertiannya bisa di lihat dibawah ini ya ?


PENGERTIAN REKURSIF
Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Menurut definisi dalam Microsoft Bookshelf, Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir.Rekursi biasanya di gunakan secara iteratif yaitu melakukan pengulangan operasi sampai jumlah pengulangan yang di inginkan.

ini ada beberapa contoh rekursif mungkin bisa menambah referensi anda :)
1. faktroial
//faktorial

#include"stdio.h"

void menu();
void iterasi();
int rekursif(int );
int tail(int ,int);

main(){
	menu();

}

void menu(){
	char pil,jawab;
	int a=1,f;
	do{
		puts("PROGRAM FAKTORIAL");
		printf("1.iterasi biasa\n2.rekursif\n3.rekursif tail\n");
		fflush(stdin);
		printf("masukan pilihan : ");
		pil=getchar();

		switch(pil){
		case '1':iterasi();break;
		case '2':
			{
				puts("\n=========================");
				puts("\t rekursif ");
				puts("=========================");
				printf("masukan faktorial dari : ");
				scanf("%d",&f);
				printf("faktorial=%d",rekursif(f));
				break;
			}
		case '3':{
				puts("\n=========================");
				puts("\t TAIL ");
				puts("=========================");
				printf("masukan faktorial dari : ");
				scanf("%d",&f);
				printf("faktorial=%d",tail(f,a));
				break;
		
			break;
			
			}
		}
		
		//if(pil=='1')
		//	iterasi();
		fflush(stdin);
		printf("\nmau input lagi : ");
		jawab=getchar();
	
	}while(jawab=='y'||jawab=='Y');
}

void iterasi(){
	int i,f,hasil=1;
	puts("\n=========================");
	puts("\t iterasi ");
	puts("=========================");
	printf("masukan faktorial dari : ");
	scanf("%d",&f);

	for(i=f;i>=1;i--){
		hasil=hasil*i;
	}
	printf("\nhasil faktorial = %d\n",hasil);
}


int rekursif(int f){
	if(f==1)
		return 1;
	else if(f==0)
		return 1;
	else
		return(f*rekursif(f-1));
}

int tail(int n, int a){

if (n < 0)
	return 0;
else if (n == 0)
	return 1;
else if (n == 1)
	return a;
else
	return tail(n-1,n*a);
}