Pergi fungsi rekursif bahasa


Rekursi bermaksud memanggil diri anda semasa proses berjalan.

Format sintaks adalah seperti berikut:

func recursion() {
   recursion() /* 函数调用自身 */
}

func main() {
   recursion()
}

Bahasa Go menyokong rekursi. Tetapi apabila kita menggunakan rekursi, pembangun perlu menetapkan syarat keluar, jika tidak rekursi akan jatuh ke dalam gelung tak terhingga.

Fungsi rekursif sangat berguna untuk menyelesaikan masalah matematik, seperti mengira faktorial, menjana jujukan Fibonacci, dsb.


Factorial

Contoh berikut menggunakan faktorial contoh fungsi rekursif bagi bahasa Go:

package main

import "fmt"

func Factorial(x int) (result int) {
  if x == 0 {
    result = 1;	
  } else {
    result = x * Factorial(x - 1);
  }
  return;
}

func main() {  
    var i int = 15
    fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(i))
}

Hasil keluaran pelaksanaan contoh di atas ialah:

15 的阶乘是 1307674368000

Jujukan Fibonacci

Contoh berikut melaksanakan Jujukan Fibonacci melalui fungsi rekursif bahasa Go:

package main

import "fmt"

func fibonaci(n int) int {
  if n < 2 {
   return n
  }
  return fibonaci(n-2) + fibonaci(n-1)
}

func main() {
    var i int
    for i = 0; i < 10; i++ {
       fmt.Printf("%d\t", fibonaci(i))
    }
}

Hasil keluaran pelaksanaan contoh di atas ialah:

0	1	1	2	3	5	8	13	21	34