Đệ quy giảng dạy


7

Tôi là một trợ lý giáo viên trong trường đại học của tôi và chủ đề tiếp theo của tôi là đệ quy. cách nào là tốt nhất để dạy đệ quy để học sinh có thể nắm bắt khái niệm dễ dàng và có thể suy nghĩ đệ quy?
Tôi đã suy nghĩ về việc giải thích cấu trúc ngăn xếp để dạy đệ quy nhưng tôi lo lắng rằng chúng bị kẹt trong quá trình theo dõi quá trình. bất kỳ gợi ý?


Bạn đang hướng tới lập trình hoặc CS (như trong, phát triển các mô hình và thuật toán)?
Raphael

Đó không phải là lập trình.
Amen

4
Cách tốt nhất để dạy đệ quy là dạy người khác dạy lớp cho bạn. * rimshot *
David Richerby

Bạn đang dạy đệ quy hay bạn đang dạy cảm ứng? Họ không phải là cùng một bài giảng.
DanielV

1
Tháp Hà Nội có thể là một ví dụ tốt để bắt đầu.
Raphael

Câu trả lời:


7

Cách ưa thích của tôi để dạy đệ quy là bằng cách tham khảo Tiên nữ đệ quy.

Tôi chắc rằng tất cả chúng ta đều quen thuộc với ý tưởng rằng những câu chuyện có thể là một cách rất hiệu quả để dạy các ý tưởng; mọi người dường như được xây dựng để nghe và nhớ những câu chuyện The Recursion Fairy là một lời giải thích được đề xuất bởi Jeff Erickson, người cho vay rất tốt cho phương pháp này.

Như Jeff E. viết:

Đệ quy là một loại giảm đặc biệt mạnh mẽ, có thể được mô tả một cách lỏng lẻo như sau:

  • Nếu trường hợp cụ thể của vấn đề là đủ nhỏ hoặc đơn giản, chỉ cần giải quyết nó.
  • Mặt khác, giảm vấn đề xuống một hoặc nhiều trường hợp đơn giản hơn của cùng một vấn đề.

Nếu tự tham khảo là khó hiểu, thật hữu ích khi tưởng tượng rằng ai đó sẽ giải quyết các vấn đề đơn giản hơn, giống như bạn nghĩ về các loại giảm khác. Tôi thích gọi người khác là Tiên nữ đệ quy. Nhiệm vụ duy nhất của bạn là đơn giản hóa vấn đề ban đầu, hoặc giải quyết trực tiếp khi đơn giản hóa là không cần thiết hoặc không thể; Fairy Recursion sẽ chăm sóc một cách kỳ diệu tất cả các bài toán con đơn giản hơn cho bạn, bằng cách sử dụng các Phương thức không phải là việc của bạn vì vậy nên ra 1 . Các độc giả tinh vi về mặt toán học có thể nhận ra Tiên nữ đệ quy bằng tên chính thức hơn, Giả thuyết cảm ứng.

1 : Khi còn là sinh viên, tôi thường gán thuộc tính đệ quy cho Yêu tinh thay vì Tiên nữ đệ quy, đề cập đến câu chuyện Brothers Grimm về một người thợ đóng giày cũ bỏ dở công việc khi anh ta đi ngủ, chỉ để khám phá khi thức dậy Yêu tinh (Hồi Doestelmänner) đã hoàn thành mọi thứ chỉ sau một đêm. Một người có nhiều kinh nghiệm hơn về mặt sinh học hơn tôi có thể nhận ra họ là cỗ máy tự biến đổi của Terence McKenna.

Tôi khuyên bạn nên đọc toàn bộ ghi chú bài giảng của mình về đệ quy . Chúng là một thứ đẹp đẽ và sẽ cho bạn nhiều ý tưởng tuyệt vời về cách dạy đệ quy.

Chẳng hạn, hãy xem lời giải thích của anh ấy về Tháp Hà Nội, nơi anh ấy chỉ ra cách giải quyết vấn đề bằng cách đệ quy. Phân yêu thich của tôi:

Bí quyết để giải câu đố này là suy nghĩ đệ quy. Thay vì cố gắng giải quyết toàn bộ câu đố cùng một lúc, hãy tập trung vào việc di chuyển chỉ đĩa lớn nhất. [...] Và sau khi chúng tôi di chuyển đĩa thứ , chúng tôi phải di chuyển các đĩa trở lại trên cùng. Vì vậy, bây giờ tất cả chúng ta phải tìm ra là làm thế nào để ...nn1

DỪNG LẠI!! Đó là nó! Đã được thực hiện! Chúng tôi đã giảm thành công vấn đề -disk Tower của Hà Nội xuống còn hai trường hợp của vấn đề ( ) Tower of Hà Nội, mà chúng tôi có thể vui vẻ chuyển đến Fairy Recursion (hoặc, để tiếp tục câu chuyện gốc, đến các tu sĩ cơ sở tại chùa).nn1


Tài liệu tham khảo về Tiên nữ đệ quy: Một video trên Youtube ("Đệ quy là khi bạn cần giải quyết vấn đề gì đó, bạn tự gọi mình thay vì người khác!" "Vì vậy, khi tôi gặp vấn đề, tôi tự hỏi mình giải quyết nó?" "Để hiểu đệ quy, người ta phải hiểu đệ quy "). Chia rẽ và chinh phục là một đội quân của các nàng tiên đệ quy .


3

Tôi thấy rằng cách tốt nhất để giải thích đệ quy không tầm thường là bắt đầu với các hàm toán học, "thoải mái" hơn đối với một số học sinh. Ví dụ, các số Fibonacci là một ví dụ tuyệt vời, vì chúng sử dụng hai cuộc gọi đệ quy.

Một ví dụ khác (có thể được đưa ra như một bài tập đơn giản) là tính.n!

Sau đó, một số ví dụ "thuật toán" theo thứ tự, trên các cấu trúc dữ liệu liên quan nhiều hơn. Các ví dụ tự nhiên nhất ở đây là duyệt qua cây (đặt hàng trước, theo thứ tự, sau đặt hàng). Tôi nghĩ rằng sau những ví dụ này, các sinh viên sẽ hiểu rõ điều đó. Từ đó trở đi, chủ yếu là luyện tập.

Tôi sẽ lưu cấu trúc ngăn xếp để sau này, vì nó phù hợp hơn với cách thức đệ quy thực sự được thực hiện trong máy tính, điều này ít liên quan đến khái niệm đệ quy thực tế.


3

Đề nghị của Shaull là tốt. Điều quan trọng cần ghi nhớ và liên tục nhắc nhở các sinh viên rằng ý tưởng cơ bản là:

Để giải quyết vấn đề: (1) giải quyết (các) trường hợp cơ sở, trong đó đệ quy không áp dụng và (2) giải quyết mọi thứ khác bằng cách giải quyết (các) vấn đề nhỏ hơn và kết hợp phù hợp các giải pháp nhỏ hơn vào giải pháp ban đầu của bạn vấn đề.

Điều này hoạt động tốt cho các vấn đề số, như điện toán(trong đó vấn đề nhỏ hơn liên quan đến điện toán ) hoặc tính toán bằng cách sử dụng bình phương lặp lại (về cơ bản, vấn đề nhỏ hơn là tính toán ).n!(n1)!xnxn/2

Đệ quy và cảm ứng đi đôi với nhau, đặc biệt là khi chứng minh tính đúng đắn của thuật toán đệ quy hoặc khi lấy ước tính thời gian cho một thuật toán.

Recursion là một kỹ thuật tự nhiên cho cây, tất nhiên, nhưng cũng đừng quên danh sách, làm những việc như tóm tắt một cách đệ quy danh sách các số hoặc đảo ngược danh sách. Tất nhiên, sáp nhập là một ứng cử viên tự nhiên ở đây và đáng để nỗ lực thực hiện tất cả một cách đệ quy, bao gồm cả việc thực hiện đệ quy tách một danh sách thành hai phần gần bằng nhau và thực hiện đệ quy phần hợp nhất.

Tôi muốn chỉ ra rằng bên cạnh việc là một công cụ thiết kế mạnh mẽ, đệ quy đáng để nghiên cứu vì có những vấn đề mà giải pháp không đệ quy có thể cực kỳ khó đưa ra. Một ví dụ điển hình cho điều này là Tháp Hà Nội: giải pháp đệ quy đơn giản và ít nhiều minh bạch, trong khi giải pháp không đệ quy thực sự khó giải thích và, có lẽ, thậm chí còn khó hơn để phát minh ngay từ đầu.


2

Khi dạy đệ quy, bạn có thể muốn bắt đầu với các hàm hoặc với cấu trúc dữ liệu .

Khi tôi nhớ lại từ những ngày dạy học, tôi thường bắt đầu với một cấu trúc nấu ăn: hành tây. Vì vậy, tôi đã giải thích rằng một củ hành tây là một hạt đậu cô đơn (hoặc một hạt nhân), hoặc một hạt oinion với một hạt đậu xung quanh nó. Sau đó, tôi chuyển sang các cấu trúc khác như chuỗi hoặc cây.

Sau đó tôi phải viết chương trình cho các cấu trúc này. Và họ tự nhiên gọi mình theo cách đệ quy, theo định nghĩa của cấu trúc. Khái niệm trường hợp cơ sở cũng xuất hiện tự nhiên hơn và cách tiếp cận tránh có khái niệm về các trường hợp đơn giản hơn của vấn đề, ít nhất là lúc đầu.

Áp dụng nó cho các dữ liệu khác như dữ liệu số thì tự nhiên hơn.


PS Mánh lới hành tây cũng hoạt động với atisô, nhưng nó có thể không phổ biến như một mặt hàng thực phẩm.
babou

Về mặt kỹ thuật, bạn đã kết hợp các định nghĩa quy nạp và các hàm đệ quy trên chúng? Đó là một sự kết hợp rất tự nhiên (người ta có thể nói là bắt buộc).
Raphael

@babou Suy nghĩ nhiều hơn về nó, atisô không thuận tiện ... trừ khi bạn dạy chủ nghĩa không xác định cùng một lúc.
babou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.