Our Blog

Latest News

#27: Recursive Function – Belajar Golang Dari Dasar

Recursive Function

Apa itu recursive function? Recursive function adalah sebuah function yang memanggil/mengeksekusi dirinya sendiri. Recursive function Bisa dikatakan salah satu yang Bisa kita gunakan Buat melakukan perulangan. Ketika menulis kode aplikasi, terkadang Terdapat kasus dimana akan lebih mudah Apabila dilakukan dengan recursive function. Misalnya penggunaan sederhana recursive function adalah ketika melakukan operasi factorial.

Ketika Membangun recursive function, kita harus memastikan function tersebut dapat berhenti. Apabila Tak, maka akan terkena error stack overflow atau Melewati limit stack karena function Maju memanggil dirinya sendiri. Oleh karena itu, biasanya recursive function Tak langsung memanggil dirinya sendiri tetapi bergantung pada kondisi tertentu.

Misalnya

Berikut ini adalah Misalnya recursive function yang digunakan Buat melakukan operasi factorial.

func doFactorial(value int) int {
	if value == 1 {
		return value
	}
	return value * doFactorial(value-1)
}

Function tersebut menerima value dengan tipe integer dan mengembalikan data dengan tipe integer. Seperti yang sudah dijelaskan sebelumnya bahwa recursive function harus dapat berhenti, maka kita Membangun pengkondisian Buat memeriksa Apabila value bernilai 1 maka kita langsung mengembalikannya tanpa memanggil function lagi. Sebaliknya, Apabila value Tak sama dengan satu maka value akan dikalikan dengan nilai kembalian dari function doFactorial dengan mengisi parameter value dikurang 1. Pengurangan ini bertujuan agar parameter yang dikirimkan pada eksekusi function berikutnya adalah berisi nilai pada urutan sebelumnya. Sehingga, Apabila kita memanggil function doFactorial dengan parameter 5 maka parameter berikutnya akan menjadi 4, kemudian 3, kemudian 2, dan 1. Akhirnya recursive function Tak akan dipanggil lagi.

READ:  #5: Tipe Data Boolean & String - Belajar Golang Dari Dasar

Sekarang mari perhatikan Misalnya operasi factorial menggunakan for loop.

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

Sekilas mungkin Tak Terdapat perbedaan yang signifikan Apabila dilihat dari kodenya. Tapi berikut ini adalah beberapa kelebihan dan kekurangan menggunakan recursive function.

Kelebihan:

  • Kode mudah ditulis
  • Kurangi pemanggilan fungsi yang Tak perlu
  • Sangat Bermanfaat ketika menerapkan solusi yang sama
  • Rekursi mengurangi panjang kode
  • Sangat Bermanfaat dalam memecahkan masalah struktur data

Kekurangan:

  • Recursive function umumnya lebih Gial daripada fungsi non-rekursif
  • Terkadang memerlukan memori yang lebih Buat menyimpan hasil sementara dalam stack
  • Terkadang sulit Buat menganalisis atau memahami kodenya
  • Tak terlalu efisien dalam konsep kompleksitas waktu
  • Kemungkinan out of memory Apabila kondisi recursive Tak diperiksa dengan Betul
READ:  20 Elemen Website dan Tools yang Krusial Dimiliki!

Full Code

package main

import "fmt"

func doFactorial(value int) int {
	if value == 1 {
		return 1
	}
	return value * doFactorial(value-1)
}

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

func main() {
	resultRecursive := doFactorial(5)
	fmt.Println(resultRecursive)

	resultForLoop := doFactorialWithForLoop(5)
	fmt.Println(resultForLoop)
}

Berikutnya: #28: Closure

Perbedaan B2B dan B2C Dalam Bisnis Yang Harus Diketahui
5 Rekomendasi Logo Maker Demi Membikin Logo Online