Đi - Đệ quy

Đệ quy là quá trình lặp lại các mục theo cách tương tự. Khái niệm tương tự cũng được áp dụng trong các ngôn ngữ lập trình. Nếu một chương trình cho phép gọi một hàm bên trong cùng một hàm, thì nó được gọi là lệnh gọi hàm đệ quy. Hãy xem ví dụ sau:

func recursion() {
   recursion() /* function calls itself */
}
func main() {
   recursion()
}

Ngôn ngữ lập trình Go hỗ trợ đệ quy. Nghĩa là, nó cho phép một hàm gọi chính nó. Nhưng trong khi sử dụng đệ quy, người lập trình cần phải cẩn thận xác định điều kiện thoát khỏi hàm, nếu không nó sẽ trở thành một vòng lặp vô hạn.

Ví dụ về đệ quy trong cờ vây

Các hàm đệ quy rất hữu ích để giải quyết nhiều vấn đề toán học như tính giai thừa của một số, tạo chuỗi Fibonacci, v.v.

Ví dụ 1: Tính giai thừa bằng cách sử dụng đệ quy trong Go

Ví dụ sau đây tính giai thừa của một số nhất định bằng cách sử dụng một hàm đệ quy:

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))
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Factorial of 15 is 1307674368000

Ví dụ 2: Chuỗi Fibonacci sử dụng đệ quy trong Go

Ví dụ sau cho thấy cách tạo chuỗi Fibonacci của một số nhất định bằng cách sử dụng hàm đệ quy:

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))
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

0 1 1 2 3 5 8 13 21 34