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

Tài liệu Tin học đại cương - bài 11: đệ quy tập tin docx

27 1,6K 3

Đ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 27
Dung lượng 609 KB

Nội dung

1 TIN HỌC ĐẠI CƯƠNG www.uit.edu.vn BÀI 11 BÀI 11 ĐỆ QUY ĐỆ QUY TẬP TIN TẬP TIN Tin học đại cương 2 ĐỆ QUY 11 NỘI DUNG NỘI DUNG Tin học đại cương 3  Khái niệm  Phân loại các hàm đệ qui:  Đệ qui tuyến tính  Đệ qui nhị phân  Đệ qui hỗ tương  Đệ qui phi tuyến NỘI DUNG BÀI ĐỆ QUY NỘI DUNG BÀI ĐỆ QUY Tin học đại cương 4  Trong bất cứ hàm đệ qui nào cũng phải có điều kiện dừng, điều kiện này sẽ kết thúc quá trình đệ qui bằng một đoạn mã chương trình được viết theo lối thông thường. Ví dụ: if (N==1) return 1; ĐIỀU KIỆN DỪNG ĐIỀU KIỆN DỪNG Tin học đại cương 5 Đệ qui Lặp Sử dụng cấu trúc lựa chọn Sử dụng cấu trúc lặp Sử dụng liên tục các lời gọi hàm Sử dụng vòng lặp tường minh Kết thúc khi đến trường hợp cơ sở Kết thúc khi điều kiện để tiếp tục vòng lặp sai Làm cho các lời gọi hàm đơn giản dần cho đến khi tới trường hợp cơ sở Thay đổi biến đếm trong vòng lặp cho đến khi nó làm cho điều kiện lặp sai Không thoát ra được khi các bước đệ qui không làm cho bài toán đơn giản hơn và cuối cùng hội tụ về trường hợp cơ sở Lặp sẽ không thoát ra được khi điều kiện lặp không bao giờ sai Đệ qui tồi hơn, nó liên tục đưa ra các lời gọi hàm làm tốn thời gian xử lý và không gian nhớ. Mỗi lần gọi hàm, lại cần thêm một bản sao của hàm, tốn thêm bộ nhớ (lưu các biến của hàm, địa chỉ trở về của hàm ). Phương pháp lặp được chuộng hơn Tuy nhiên, có nhiều bài toán có thể giải bằng đệ qui lại tốt hơn (các bài toán cổ điển: tháp Hà Nội, mã đi tuần, 8 hậu, sắp xếp QuickSort…) SO SÁNH ĐỆ QUY VÀ LẶP SO SÁNH ĐỆ QUY VÀ LẶP Tin học đại cương 6  Đệ qui tuyến tính  Đệ qui nhị phân  Đệ qui hỗ tương  Đệ qui phi tuyến PHÂN LOẠI CÁC DẠNG ĐỆ QUY PHÂN LOẠI CÁC DẠNG ĐỆ QUY Tin học đại cương 7  Một hàm được gọi là đệ qui tuyến tính khi nó có dạng: <KDL> < tên hàm> { if < điều kiện dừng > { /*Trả về giá trị hay kết thúc công việc */ } else { /*Làm một số công việc */ /*Gọi đệ qui đến hàm <tên hàm> */ } } ĐỆ QUY TUYẾN TÍNH ĐỆ QUY TUYẾN TÍNH Tin học đại cương 8  Viết hàm đệ qui tính x n , n nguyên dương.  Điều kiện dừng: nếu n=0 thì x 0 =1.  Tổng quát: x n =x n-1 *x. float xn(float x, int n) { if (n==0) return 1; else return xn(x,n-1)*x; } VÍ DỤ VỀ ĐỆ QUY TUYẾN TÍNH VÍ DỤ VỀ ĐỆ QUY TUYẾN TÍNH Tin học đại cương 9  Một hàm được gọi là đệ qui nhị phân khi nó có dạng: <KDL> < tênhàm> { if < điều kiện dừng > /*Trả về gtrị hay kthúc công việc */ else { /*Làm một số công việc */ /*Gọi đqui đến <tên> để giải quyết vấn đề nhỏ hơn */ /*Gọi đqui đến <tên> để giải quyết vấn đề còn lại */ } } ĐỆ QUY NHỊ PHÂN ĐỆ QUY NHỊ PHÂN Tin học đại cương 10  Viết hàm đệ qui tính số hạng thứ n của dãy fibo. F0=F1=1 Fn=Fn-1+Fn-2  Điều kiện dừng: nếu n=0 hay n=1 thì Fn=1. long fibo(int n) { if ((n==0)||(n==1)) return 1; else return (fibo(n-1)+fibo(n-2)); } VÍ DỤ VỀ ĐỆ QUY NHỊ PHÂN VÍ DỤ VỀ ĐỆ QUY NHỊ PHÂN [...]... r+ Tin học đại cương w+ a+ t b Mở tập tin để đọc Mở tập tin để ghi Mở để ghi thêm thông tin vào đó Vị trí đầu tiên để truy xuất tập tin là cuối tập tin vừa mở Mở một tập tin ở cả hai chế độ ghi đọc Vị trí đầu tiên để truy xuất tập tin là đầu tập tin vừa mở Mở một tập tin ở cả hai chế độ ghi đọc Tập tin được mở để ghi và đọc Vị trí đầu tiên để truy xuất tập tin là cuối tập tin vừa mở Mở tập tập tin. .. VỀ ĐỆ QUY HỖ TƯƠNG Tin học đại cương /* Prototype */ unsigned long TinhY(int n); unsigned long TinhX(int n); /* Implementation */ unsigned long TinhY(int n) { if (n==0) return 1; return TinhX(n-1) + TinhY(n-1); } unsigned long TinhY(int n) { if (n==0) return 1; return n*n*TinhX(n-1) + TinhY(n-1); } 15 NỘI DUNG Tin học đại cương 12 TẬP TIN 16 NỘI DUNG BÀI TẬP TIN  Khái niệm  Các thao tác trên Tập Tin. .. trên Tập Tin  Các hàm Nhập Xuất  Các hàm di chuyển Con Trỏ tập tin Tin học đại cương  Các hàm quản lý Thư Mục 17 KHÁI NIỆM TẬP TINTập tin là một loại dữ liệu có thể ghi lên đĩa để dùng nhiều lần  Có 2 loại tập tin:  Tin học đại cương  Tập tin văn bản (text file, ASCII file): *.PAS, *.C, … (các tập tin mã nguồn chương trình) Mỗi tập tin văn bản gồm nhiều dòng Mã ngăn cách dòng (chuyển dòng khác)... i0; Tin học đại cương  Xây dựng: int x(int n) { if (n==0)...  Đọc hay ghi thông tin lên file (fread, fscanf, fwrite, fprintf)  Đóng file (fclose)  Có các hàm làm việc với tập tin thông qua con trỏ tập tin FILE *pf; Con trỏ này được xác định khi ta mở tập tin  Mỗi biến file đại diện trong RAM luôn có một con trỏ file Lúc đầu, con trỏ file trỏ vào phần tử đầu tiên, sau mỗi lần đọc hay ghi dữ liệu vào biến file con trỏ tự động trỏ tới mẫu tin kế tiếp  Chỉ thao... vừa mở Mở tập tập tin kiểu văn bản Mở tập tập tin kiểu nhị phân (binary data) 20 CÁC HÀM NHẬP XUẤT  int int int int putc (int ch, FILE *f); fputc(int ch, FILE *f); getc (FILE *f); fgetc(FILE *f);  int fputs (const char *s, FILE *f); char *fgets(const char *s, int n, FILE *f);  int fprintf(FILE *f, const char *dac_ta, ); fscanf (FILE *f, const char *dac_ta, ); Tin học đại cương  int putw(int n, FILE... *f);  int fseek(FILE *f, long so_byte, int vi_tri_bat_dau);  Tin học đại cương  long ftell(FILE *f); 22 CÁC HÀM THAO TÁC THƯ MỤC      Tin học đại cương  int chdir(char *s); char *getcwd(char *s, int n); int mkdir(char *s); int rmdir(char *s); int findfirst(char *path, struct ffblk *fd, int attrib); int findnext(struct ffblk *fd); 23 Tin học đại cương VÍ DỤ MINH HỌA #include void main()... copied:\n"); gets("%s", in_name); printf("Output filename:\n"); gets("%s", out_name); 24 Tin học đại cương VÍ DỤ MINH HỌA in_file = fopen ( in_name, "r"); if( in_file == NULL ) printf(“Cannot open”); else { out_file = fopen (out_name, "w"); if( out_file == NULL ) printf(“Can't open”); else { 25 VÍ DỤ MINH HỌA Tin học đại cương c =getc(in_file); while(c!= EOF ) putc(c, out_file); /* copy EOF */ putc . 1 TIN HỌC ĐẠI CƯƠNG www.uit.edu.vn BÀI 11 BÀI 11 ĐỆ QUY ĐỆ QUY TẬP TIN TẬP TIN Tin học đại cương 2 ĐỆ QUY 11 NỘI DUNG NỘI DUNG Tin học đại cương 3  Khái. BÀI TẬP TIN NỘI DUNG BÀI TẬP TIN Tin học đại cương 18  Tập tin là một loại dữ liệu có thể ghi lên đĩa để dùng nhiều lần.  Có 2 loại tập tin:  Tập tin

Ngày đăng: 17/02/2014, 01:20

TỪ KHÓA LIÊN QUAN

w