Mengenal Function Rekursif dan Non Rekursif Di Golang

Table of Contents
Mengenal Function Rekursif dan Non Rekursif Di Golang

Kali ini Code Dadakan akan membahas tentang Function Rekursif dan Non Rekursif pada bahasa pemerograman golang.

Apa itu Function Rekursif 

Function rekursif adalah sebuah fungsi yang dapat memanggil dirinya sendiri di dalam blok kode yang bertujuan untuk memecah suatu masalah menjadi masalah yang lebih kecil dan menyelesaikannya secara berulang hingga mencapai kondisi dasar yang sudah di tentukan. 

Berikut adalah contoh full code yang akan saya jelaskan, di dalam kode ini sudah terdapat function rekursif dan non-rekursif : 

package main

import "fmt"

func main(){

	noRecursive := noRecursive(5)
	fmt.Println(noRecursive)

	sumWithRecursive := sumWithRecursive(5);
	fmt.Println(sumWithRecursive)
	fmt.Println(1+2+3+4+5)
}

func noRecursive(value int)int{
	result := 1
	for i := value; i > 0; i-- {
		result *= i
	}
	return result
}

func loopRecursive(value string)string{
	if value == "quit" {
		return "Logout"
	}else {
		return loopRecursive("welcome..");
	}
}

func sumWithRecursive(value int)int{
	if value == 1 {
		return 1;
	}else {
		return value + sumWithRecursive(value - 1)
	}
}

Berikut adalah penjelasan dari kode di atas yang mengimplementasikan function rekursif dan non rekursif : 

Function Rekursif loopRecursive()

Function rekursif memerlukan kondisi berhenti agar tidak terjebak dalam perulangan yang tak terbatas. Bisa di lihat pada function loopRecursive() menunjukan bagaimana fungsi rekursif bisa melakukan perulangan terus menerus tanpa ada kondis yang tertentu agar perulangan tersebut berhenti. 

func loopRecursive(value string) string {
    if value == "quit" {
        return "Logout"
    } else {
        return loopRecursive("welcome..")
    }
}

Apabila nilai dari "value" tidak di ubah menjadi "quit", maka fungsi loopRecursive() tersebut akan memanggil dirinya sendiri dan akan mengakibatkan " stack overflow " pada program. 

Function Rekursif sumWithRecursive()

Function rekursif sumWithRecursive adalah contoh function rekursif yang benar dan bagaimana function tersebut di gunakan untuk menghitung jumlah dari sebuah angka

func sumWithRecursive(value int) int {
    if value == 1 {
        return 1
    } else {
        return value + sumWithRecursive(value - 1)
    }
}

Pada contoh kode di atas, apabila "value" sudah mencapai angka 1, maka function tersebut akan mengembalikan nilai 1 sebagai akhir dari function. Apabila nilai "value" masih di atas 1, maka function sumWithRecursive() akan memanggil dirinya sendiri, dan kemudian akan melakukan operator penambahan dari nilai "value". 

Function Non Rekursif

Berikut adalah contoh function non rekursif, seperti pada full code di atas : 

func noRecursive(value int) int {
    result := 1
    for i := value; i > 0; i-- {
        result *= i
    }
    return result
}

Function non rekursif di atas di tugaskan untuk menghitung faktorial. Kita menggunakan perulangan "for" untuk mengalikan "result" dengan angka yang menurun dari "value" hingga 1. Kelebihan dari function non rekursif ini adalah kita menhindarkan diri dari potensi terjadinya stack overflow karena tidak menggunakan pemanggilan fungsi yang berulang ulang. 

Jadi anda bisa menggunakan function rekursif sesuai dengan permasalahan yang anda dapatkan. Jangan sampai anda menggunakan metode function rekursif yang hanya akan menyebabkan potensi perulangan tanpa henti pada applikasi anda tanpa melakukan kondisi di dalam function itu sendiri agar terhindar dari permasalahan stack overflow. 

Kesimpulan

Fitur function rekursif dan non rekursif masing masing memiliki kegunaan dalam bahasa pemerograman golang. Function rekursif cocok untuk masalah yang memiliki struktur berulang dan perlu memerhatikan kondisi di dalam function tersebut. Sebaliknya, non rekursif adalah sebuah function yang lebih efisien dalam menghindari terjadinya stack overflow. Jadi gunakan kedua function tersebut sesuai kondisi permasalahan yang anda alami. Semoga anda bisa paham yaa apa yang kami jelaskan pada module ini, Terus belajar dan melatih tingkat skill koding anda. Terima kasih

Selanjutnya anda bisa mengerjakan tantangan golang tahap 4 : 

Membangun Applikasi Perbankan Sederhana Di Golang

Posting Komentar