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
Selanjutnya anda bisa mengerjakan tantangan golang tahap 4 :
Posting Komentar