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