Đệ quy Swift (Có ví dụ)

Trong bài này, bạn sẽ học cách tạo một hàm đệ quy; một hàm gọi chính nó.

Một hàm gọi chính nó được gọi là một hàm đệ quy. Và, kỹ thuật này được gọi là đệ quy. Trong khi tạo một hàm đệ quy, bạn phải tạo một điều kiện để hàm không gọi chính nó vô thời hạn (vô hạn).

Cách đệ quy hoạt động trong Swift?

 func recurse () (// câu lệnh recurse ()) recurse () 

Hình dưới đây cho thấy cách hoạt động của đệ quy bằng cách gọi đi gọi lại chính nó.

Trong sơ đồ trên, đệ quy thực hiện vô hạn. Tuy nhiên, hầu như tất cả các lần, bạn tạo một đệ quy thực thi cho đến khi đáp ứng một số điều kiện.

Để ngăn chặn đệ quy vô hạn, hãy sử dụng lệnh gọi đệ quy bên trong Câu lệnh điều kiện Swift, ví dụ câu lệnh if… else.

Ví dụ 1: In ra N số dương

 func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3) 

Khi bạn chạy chương trình sau, đầu ra sẽ là:

 Đếm ngược: 3 2 1 0

Trong chương trình trên, câu lệnh print("Countdown:")xuất ra Countdown: trong bảng điều khiển. Và câu lệnh countDownToZero(num:3)gọi hàm nhận một tham số Integer.

Câu lệnh bên trong hàm countDownToZero()thực thi và nếu điều kiện num> 0được đáp ứng, hàm countDownToZero()được gọi lại với tư cách là countDownToZero(num: num - 1).

Nếu điều kiện không được đáp ứng, lệnh gọi hàm không được thực hiện và quá trình đệ quy dừng lại.

Hãy xem điều này trong các bước

Các bước thực hiện
Các bước Gọi hàm Đã in num> 0?
1 countDownToZero(3) 3 Đúng
2 countDownToZero(2) 2 Đúng
3 countDownToZero(1) 1 Đúng
4 countDownToZero(0) 0 Không (Kết thúc)

Ví dụ 2: Tìm giai thừa của một số

 func factorial(of num: Int) -> Int ( if num == 1 ( return 1 ) else ( return num * factorial(of:num - 1) ) ) let x = 4 let result = factorial(of: x) print("The factorial of (x) is (result)") 

Khi bạn chạy chương trình sau, đầu ra sẽ là:

 Giai thừa của 4 là 24

Ví dụ này hoạt động như thế nào?

Hãy xem điều này trong các bước

Các bước thực hiện
Các bước Đối số được thông qua Báo cáo trả lại Giá trị
1 4 return 4 * factorial(of:3) 4 * giai thừa (trong số: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * giai thừa (trong số: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * giai thừa (trong số: 1)
4 1 return 1 4 * 3 * 2 * 1

Thông thường đệ quy được sử dụng để thay thế phép lặp khi có thể tìm ra giải pháp cho một vấn đề trong khoảng hai bước. Bước đầu tiên tìm kiếm giải pháp, nếu không lặp lại quy trình.

thú vị bài viết...