1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Ngôn ngữ lập trình: Bài 9 - Lê Nguyễn Tuấn Thành - Trường Đại Học Quốc Tế Hồng Bàng

10 4 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 347,29 KB

Nội dung

[r]

(1)

NGƠN NG LP TRÌNH

Bài 9: Đệ Quy

Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn

Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT

(2)

 Đệ quy với hàm void  Truy vết lời gọi đệ quy

 Đệ quy vô hạn (infinite recursion),

tràn (overflows)

 Đệ quy với hàm trả về giá trị

 Hàm Power()

 Suy nghĩ theo kiểu đệ quy

(3)

GIỚI THIỆU VỀ ĐỆ QUY (RECURSION)

 Một hàm gọi

 Trong định nghĩa hàm đó, có lời gọi đến hàm

 C++ cho phép đệ quy

 Giống phần lớn ngơn ngữ lập trình bậc cao  Có thể kỹ thuật lập trình hữu ích

 Có giới hạn

(4)

ĐỆ QUY VỚI HÀM VOID

 Chia để trị (Devide and Conquer)

 Kỹ thuật thiết kế

 Chia tác vụ lớn thành tác vụ

 Tác vụ phiên nhỏ tác vụ

gốc!

(5)

VÍ DỤ ĐỆ QUY VỚI HÀM VOID

 Xem xét tác vụ sau:

 Tìm kiếm giá trị danh sách

 Tác vụ 1: tìm kiếm nửa đầu danh sách  Tác vụ 2: tìm kiếm nửa sau danh sách

 Các tác vụ phiên nhỏ tác vụ

gốc!

 Khi điều xảy ra, hàm đệ quy sử

dụng

(6)

SỐ THEO CHIỀU DỌC

 Tác vụ: hiển thị chữ số số nguyên theo

chiều dọc, số dịng

 Ví dụ lời gọi hàm writeVertical(1234); có kết

quả:

(7)

SỐ THEO CHIỀU DỌC

ĐỊNH NGHĨA HÀM ĐỆ QUY

 Chia vấn đề thành trường hợp  Trường hợp đơn giản/cơ sở: if n<10

 Đơn giản in số n hình

 Trường hợp đệ quy: if n>=10, có tác vụ con:

1 Hiển thị theo chiều dọc tất chữ số trừ chữ số cuối

cùng

2 Hiển thị chữ số cuối

 Ví dụ: với tham số 1234

 Tác vụ 1: hiển thị 1,2,3 theo chiều dọc  Tác vụ 2: hiển thị chữ số

(8)

ĐỊNH NGHĨA HÀM WRITEVERTICAL()

 Xét trường hợp slide trước

void writeVertical(int n) {

if (n < 10) // Trường hợp sở

cout << n << endl; else

{ // Bước đệ quy

(9)

TRUY VẾT HÀM WRITEVERTICAL()

 Ví dụ lời gọi: writeVertical(123);

writeVertical(12); (123/10) writeVertical(1); (12/10) cout << << endl;

cout << << endl; cout << << endl;

 Mũi tên định tác vụ hàm thực

 Chú ý hai lời gọi đầu tiên: gọi lại hàm (đệ

quy)

 Lời gọi cuối hiển thị (1) “kết thúc”

(10)

ĐỆ QUY – MỘT CÁI NHÌN GẦN HƠN

 Máy tính lưu vết lời gọi đệ quy

 Dừng hàm

 Phải biết kết lời gọi đệ quy trước tiến hành xử lý (proceeding)

 Lưu trữ thông tin cần thiết cho lời gọi

Để sử dụng sau

Ngày đăng: 01/04/2021, 16:33

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN