Pergi - Rekursi
Rekursi adalah proses pengulangan item dengan cara yang mirip sendiri. Konsep yang sama juga berlaku dalam bahasa pemrograman. Jika suatu program memungkinkan untuk memanggil suatu fungsi di dalam fungsi yang sama, maka itu disebut pemanggilan fungsi rekursif. Lihat contoh berikut -
func recursion() {
recursion() /* function calls itself */
}
func main() {
recursion()
}
Bahasa pemrograman Go mendukung rekursi. Artinya, memungkinkan suatu fungsi memanggil dirinya sendiri. Tetapi saat menggunakan rekursi, pemrogram harus berhati-hati untuk menentukan kondisi keluar dari fungsi, jika tidak maka akan terus menjadi loop tak terbatas.
Contoh Rekursi di Go
Fungsi rekursif sangat berguna untuk menyelesaikan banyak masalah matematika seperti menghitung faktorial suatu bilangan, menghasilkan deret Fibonacci, dll.
Contoh 1: Menghitung Faktorial Menggunakan Rekursi di Go
Contoh berikut menghitung faktorial dari bilangan tertentu menggunakan fungsi rekursif -
package main
import "fmt"
func factorial(i int)int {
if(i <= 1) {
return 1
}
return i * factorial(i - 1)
}
func main() {
var i int = 15
fmt.Printf("Factorial of %d is %d", i, factorial(i))
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Factorial of 15 is 1307674368000
Contoh 2: Seri Fibonacci Menggunakan Rekursi di Go
Contoh berikut menunjukkan cara menghasilkan deret Fibonacci dari bilangan tertentu menggunakan fungsi rekursif -
package main
import "fmt"
func fibonaci(i int) (ret int) {
if i == 0 {
return 0
}
if i == 1 {
return 1
}
return fibonaci(i-1) + fibonaci(i-2)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d ", fibonaci(i))
}
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
0 1 1 2 3 5 8 13 21 34