Sử dụng đệ quy trong R – w3seo tìm hiểu về Recursive Function trong R

Rate this post

Trong hướng dẫn R này, chúng ta sẽ đề cập đến tính năng lập trình thú vị nhất, tức là hàm đệ quy R. Trước hết, chúng ta sẽ thảo luận về khái niệm đệ quy, hàm đệ quy trong R và các ví dụ khác nhau về nó. Sau đó, chúng tôi cũng sẽ đề cập đến các tính năng và ứng dụng của hàm đệ quy R.

Các bài viết liên quan:

Đệ quy là gì?

Trong một hàm đệ quy (recursion), hàm gọi chính nó. Trong điều này, để giải quyết các vấn đề, chúng tôi chia nhỏ các chương trình thành các chương trình con nhỏ hơn.

Ví dụ:

4! = 4 * 3 * 2 * 1 = 24

Bài toán tìm giai thừa của 4 này được chia thành một bài toán con nhân giai thừa của 3 với 4.

4! = 4 * 3

Hay nói chung,

n! = n * (n-1)!

Nếu không có điều này, đệ quy sẽ không kết thúc và sẽ tiếp tục xa hơn.

Hàm đệ quy trong R là gì?

Các hàm đệ quy tự gọi chúng. Họ chia nhỏ vấn đề thành những thành phần nhỏ nhất có thể. Hàm () gọi chính nó trong hàm gốc () trên mỗi thành phần nhỏ hơn. Sau đó, các kết quả sẽ được tập hợp lại với nhau để giải quyết vấn đề ban đầu.

Factorial <- function(N)
{
if (N == 0)
return(1)
else
return( N * Factorial (N-1))
}

Đầu ra:

Ví dụ về hàm đệ quy R

1. Tìm giai thừa của một số bằng hàm đệ quy.

recur_factorial <- function(n) {
if(n <= 1) {
return(1)
} else {
return(n * recur_factorial(n-1))
}
}

Đầu ra:

Ở đây, recal_factorial ()  được sử dụng để tính sản phẩm lên đến con số đó. Giả sử người dùng chuyển 4 vào hàm. Bên trong giai thừa (), số 4 được nhân với giai thừa của (4 – 1 = 3). 3 lại được nhân lên thành giai thừa của (3 – 1 = 2). Điều này tiếp tục cho đến khi con số đạt đến 1. Bây giờ, tất cả các hàm trước đó của 2, 3 và 4 trả về kết quả lần lượt cho bạn kết quả cuối cùng 1 * 2 * 3 * 4 bằng 24.

2. Tìm tổng các số tự nhiên bằng hàm đệ quy.

calculate_sum() <- function(n) {
if(n <= 1) {
return(n)
} else {
return(n + calculate_sum(n-1))
}
}

Đầu ra:

Ở đây, Calcul_sum (n-1) được sử dụng để tính toán phép cộng lên đến số đó. Giả sử người dùng chuyển 4 vào hàm. Bên trong tính_sum (n-1), số được thêm vào tổng của (4 – 1 = 3). Bây giờ, 4 được thêm vào tổng của (n-1) tức là (4-1) = 3. Nó cho kết quả cuối cùng là 4+ (3 + 2 + 1) = 10

3. Tìm tổng của chuỗi 1² + 2² + 3² +… .. + n² bằng cách sử dụng hàm đệ quy.

Sum.Series <- function(number)
{
if(number == 0) {
return (0)
} else {
return ((number * number ) + Sum.Series(number - 1))
}
}
Sum.Series(3)

Đầu ra:

Chúng ta hãy chia biểu thức trên để hiểu rõ hơn.

(number * number) = Nhân số

Sum.Series (number – 1) = Gọi cùng một hàm với giá trị giảm dần (giảm số đi 1).

Đệ quy 1:

number = 4, lớn hơn 0 vì vậy,

(số * số) + Sum.Series (số – 1)

(4 * 4) + Sum.Series (4 – 1)

16 + Sum.Series (3)

Đệ quy 2:

số sẽ trở thành 3, lớn hơn 0 vì vậy,

(số * số) + Sum.Series (số – 1)

(3 * 3) + Sum.Series (3 – 1)

9 + Sum.Series (2)

Tổng sẽ là 9 + 16 = 25

Đệ quy 3:

số sẽ trở thành 2, lớn hơn 0 vì vậy,

(số * số) + Sum.Series (số – 1)

(2 * 2) + Sum.Series (2 – 1)

4 + Sum.Series (1)

Tổng sẽ là: 16 + 9 + 4 = 29

Đệ quy 4:

số sẽ trở thành 1, lớn hơn 0 vì vậy,

(số * số) + Sum.Series (số – 1)

(1 * 1) + Sum.Series (1 – 1)

1 + Sum.Series (0)

Tổng sẽ là 16 +9 + 4 + 1 = 30

Đệ quy 5:

Số sẽ trở thành 0, có nghĩa là điều kiện đầu tiên nếu là đúng, vì vậy, nó sẽ thoát khỏi hàm.

Đầu ra cuối cùng sẽ là 30.

Các tính năng chính của R đệ quy

Một số tính năng chính của hàm đệ quy R là:

  • Việc sử dụng đệ quy, thường xuyên, làm cho mã ngắn hơn và nó trông cũng sạch sẽ.
  • Đó là một giải pháp đơn giản cho một số trường hợp.
  • Nó thể hiện trong một hàm gọi chính nó.

Các ứng dụng của R Recursion

Sau khi tìm hiểu các tính năng của hàm đệ quy trong R , bây giờ chúng ta hãy thảo luận về các ứng dụng của hàm đệ quy R.

Lập trình động

Đó là quá trình để tránh tính toán lại. Nó cũng là một công cụ cần thiết để lập trình thống kê. Có hai kiểu lập trình động:

Lập trình động từ dưới lên

  • Trong điều này, chúng tôi kiểm tra hàm bắt đầu với giá trị đối số nhỏ nhất có thể.
  • Tất cả các giá trị được tính toán sẽ được lưu trữ trong một mảng.

Lập trình động từ trên xuống

  • Lưu từng giá trị được tính toán dưới dạng hành động cuối cùng của một hàm đệ quy.
  • Kiểm tra xem các giá trị được tính trước có tồn tại dưới dạng tác vụ đầu tiên hay không.

Thuật toán Chia và Chinh phục

  • Nó là một lớp phổ biến của hàm đệ quy.
  • Các đặc điểm chung của thuật toán này là đầu vào quá trình, chia đầu vào thành các phần nhỏ hơn, (các) quy trình gọi đệ quy, ít nhất một phần.
  • Đôi khi, đệ quy có thể xảy ra trước khi đầu vào được xử lý.

Bản tóm tắt

Chúng tôi đã nghiên cứu về đệ quy, các tính năng của nó và các ví dụ về hàm đệ quy. Trong hướng dẫn này, chúng ta cũng đã học về các hàm đệ quy thường xuất hiện trong thống kê và lập trình động cùng với kiểu của nó.