1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình nâng cao: Chương 7 - Trần Minh Thái

13 20 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 361,86 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Kỹ thuật lập trình nâng cao - Chương 7: Lập trình đệ quy cung cấp cho người học các kiến thức: Đệ quy tuyến tính, đệ quy nhị phân, đệ quy phi tuyến, đệ quy hỗ tương, các hoạt động hàm đệ quy. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Tr ần Minh Thái

minhthai@itc.edu.vn

*

Trang 2

thân của hàm đó có lệnh gọi lại chính nó một

* Phân loại đệqui

2

Trang 3

•Trong thân hàm có duy nhất một lời gọi hàm gọi lại chính nómột cách tường minh

<Kiểu dữliệu hàm> TenHam (<danh sách tham số>) {

if (điều kiện d ừng) {

//Trảvềgiá trịhay kết thúc công việc }

//Thực hiện một sốcông việc (nếu có)

TenHam (<danh sách tham số>);

//Thực hiện một sốcông việc (nếu có)

Trang 4

Ví dụ: Tính

- Điều kiện d ừng: S(0) = 0.

- Qui tắc (công th ức) tính: S(n) = S(n-1) + n.

int TongS (int n)

{

if(n==0)

return 0;

return ( TongS(n-1) + n );

}

n n

4

Trang 5

dương

t ố?

kích thước n

Trang 6

Trong thân của hàm cóhai lời gọi hàm gọi lại chính nómột cách tường minh.

<Kiểu dữliệu hàm> TenHam (<danh sách tham số>)

{

if (điều kiện dừng)

{

//Trảvềgiá trịhay kết thúc công việc }

//Thực hiện một sốcông việc (nếu có)

.TenHam (<danh sách tham số>); //Giải quyết vấn đềnhỏhơn

//Thực hiện một sốcông việc (nếu có)

TenHam (<danh sách tham số>); //Giải quyết vấn đềcòn lại

//Thực hiện một sốcông việc (nếu có)

Trang 7

Ví dụ: Tính sốhạng th ứn của dãy Fibonaci

f1 = f0 =1 ;

Điều kiện d ừng: f(0) = f(1) = 1.

long Fibonaci (int n)

{

if(n==0 || n==1)

return 1;

return Fibonaci(n-1) + Fibonaci(n-2); }

Trang 8

*Trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp.

<Kiểu dữ liệu hàm> TenHam (<danh sách tham số>)

{

for (int i = 1; i<=n; i++)

{ //Th ực hiện một sốcông việc (nếu có)

if (điều kiện d ừng) {

//Trả về giá trịhay kết thúc công việc }

else { //Thực hiện một sốcông việc (nếu có)

TenHam (<danh sách tham số>);

}

}

}

8

Trang 9

Ví dụ: Tính sốhạng thứn của dãy {Xn} được định nghĩa

như sau:

X0 =1 ;

Xn = n2X0 + (n-1)2X1 + … + 12Xn-1 ; (n≥1)

Điều kiện d ừng:X(0) = 1.

long TinhXn (int n)

{

if(n==0)

return 1;

long s = 0;

for (int i=1; i<=n; i++)

s = s + i * i * TinhXn(n-i);

return s;

Trang 10

* Trong thân của hàm này có l ời gọi hàm đến hàm kia vàtrong thân của hàm kia có

l ời gọi hàm tới hàm này.

10

Trang 11

<Kiểu dữliệu hàm> TenHam2 (<danh sách tham số>);

<Kiểu dữliệu hàm> TenHam1 (<danh sách tham số>)

{

//Thực hiện một sốcông việc (nếu có)

…TenHam2 (<danh sách tham số>);

//Thực hiện một sốcông việc (nếu có)

}

<Kiểu dữliệu hàm> TenHam2 (<danh sách tham số>) {

//Thực hiện một sốcông việc (nếu có)

…TenHam1 (<danh sách tham số>);

//Thực hiện một sốcông việc (nếu có)

}

Trang 12

Ví dụ: Tính sốhạng th ứn của hai dãy {Xn}, {Yn} đ ược định nghĩa như sau:

X0 =Y0 =1 ;

Xn = Xn-1 + Yn-1; (n>0)

Yn = n 2 Xn-1 + Yn-1; (n>0)

long TinhYn(int n);

long TinhXn (int n)

{

if(n==0)

return 1;

return TinhXn(n-1) + TinhYn(n-1);

}

long TinhYn (int n)

{

if(n==0)

return 1;

return n*n*TinhXn(n-1) + TinhYn(n-1);

}

12

Trang 13

* Ví d ụ tính n! với n=5

Ngày đăng: 02/11/2020, 11:21

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

TÀI LIỆU LIÊN QUAN