Thủ tục đệ quy trong scratch – Minh họa chương trình tính n giai thừa

Bạn đã quá quen thuộc với thủ tục đệ quy trong Pascal hay C, vậy trong Scratch có thể lập thủ tục đệ quy được hay không nhỉ, khi chưa thử lập trình mình đã nghĩ là được bởi nếu viết được chương trình con thì sẽ viết được đệ quy đúng không các bạn, nếu chưa biết về chương trình con trong Scratch thì vui lòng quay lại bài trước nhé, tuy nhiên cách viết đệ quy trong Scratch mình thấy có hơi khác một chút, chúng ta cùng tìm hiểu nào.

Trước hết hãy thử tính n giai thừa bằng Scratch xem nào:


Nhớ lại một chút về đệ quy: Thủ tục đệ quy hiểu nôm na là thủ tục có gọi lại chính nó vậy thôi.

Để cho dễ hiểu ta hãy minh họa qua bài toán đệ quy kinh điển: Tính n giai thừa (n!) với n là số tự nhiên và chú ý 0! =1;

Thuật toán đệ quy tính n!

Nếu n = 0 thì n! = 1 nếu không n! = (n – 1)!*n

Đơn giản quá nhỉ, ta hãy cùng xem lại cách viết đệ quy trong pascal

Thủ tục đệ quy tính n giai thừa trong Pascal

Function giaithua(n:word):longint;

begin

if n = 0 then giaithua:=1 else giaithua:=giaithua(n-1)*n;

end;

Thủ tục đệ quy trong Scratch để tính n giai thừa

Ở đây tôi phải dùng một biến để lấy giá trị của n giai thừa

Ôi chết bạn xóa dòng lệnh “chờ 1 giây” trong đoạn mã trên đi nhé, mình đưa vào để quan sát xem cách mà chương trình thực hiện như thế nào ấy mà, đây cũng là một trong những kĩ thuật lập trình trong scratch giúp kiểm tra cách mà chương trình thực hiện.

Các bạn có thấy sự khác biệt giữa hai chương trình tính n giai thừa trong Pascal và trong Scratch không?

Trong Pascal cái tên của thủ tục “giaithua” có vai trò như một biến để nhận giá trị kết quả còn trong Scratch thì không làm được như vậy (theo kiến thức của mình nhé) mà phải dùng một biến để lưu và các bạn thấy đoạn mã cũng hơi lằng nhằng một chút nhỉ.

Mình thấy kiến thức này cũng thú vị nên đã đưa ngay bài này vào 50 bài tập lập trình Scratch

Vậy là bạn đã nắm được thủ tục đệ quy trong Scratch rồi nhé, bạn nào có kiến thức nhiều hơn về đệ quy scratch vui lòng chia sẻ thêm. Bây giờ các bạn hãy thử giải quyết những bài toán đệ quy đã từng làm trong Pascal  bằng Scratch xem thế nào nhé.

File Word hướng dẫn lập trình tính giai thừa bằng Scratch hay mBlock

Trả lời

Email của bạn sẽ không được hiển thị công khai.

Check Also
Close
Back to top button