Đi hàm đệ quy
Hàm đệ quy
Go chấp nhận các hàm đệ quy. Một hàm được gọi là đệ quy nếu nó gọi chính nó và đạt đến điều kiện dừng.
Trong ví dụ sau, testcount()
là một hàm gọi chính nó. Chúng tôi sử dụng biến x
làm dữ liệu, biến này tăng dần 1 ( x + 1
) mỗi lần chúng tôi lặp lại. Quá trình đệ quy kết thúc khi biến x
bằng 11 ( x == 11
).
Ví dụ
package main
import ("fmt")
func testcount(x int) int {
if x == 11 {
return 0
}
fmt.Println(x)
return testcount(x
+ 1)
}
func main(){
testcount(1)
}
Kết quả:
1
2
3
4
5
6
7
8
9
10
Đệ quy là một khái niệm toán học và lập trình phổ biến. Điều này có lợi là bạn có thể lặp qua dữ liệu để đạt được kết quả.
Nhà phát triển nên cẩn thận với các hàm đệ quy vì có thể khá dễ dàng chuyển sang viết một hàm không bao giờ kết thúc hoặc một hàm sử dụng quá nhiều bộ nhớ hoặc sức mạnh bộ xử lý. Tuy nhiên, khi được viết chính xác, đệ quy có thể là một cách tiếp cận lập trình rất hiệu quả và tinh tế về mặt toán học.
Trong ví dụ sau, factorial_recursion()
là một hàm gọi chính nó. Chúng tôi sử dụng biến x
làm dữ liệu, biến này sẽ giảm (-1) mỗi lần chúng tôi lặp lại. Quá trình đệ quy kết thúc khi điều kiện không lớn hơn 0 (tức là khi nó bằng 0).
Ví dụ
package main
import ("fmt")
func factorial_recursion(x float64) (y float64) {
if x > 0 {
y = x * factorial_recursion(x-1)
} else {
y = 1
}
return
}
func main() {
fmt.Println(factorial_recursion(4))
}
Kết quả:
24
Đối với một nhà phát triển mới, có thể mất một chút thời gian để tìm ra cách thức hoạt động chính xác của nó, cách tốt nhất để tìm hiểu là thử nghiệm và sửa đổi nó.