kỹ thuật lập trình C chuyên nghiệp phần 10
Số trang: 18
Loại file: pdf
Dung lượng: 570.39 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu kỹ thuật lập trình c chuyên nghiệp phần 10, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
kỹ thuật lập trình C chuyên nghiệp phần 10 Tìm kiếm nhị phânii.ii.int searchBinary(int left,int right, intx){ if(left Đệ quy nhánh2.2. Là dạng đệ quy mà trong quá trình đệ quy, lời gọi được thực hiện nhiều lần. n. Ví dụ: Tháp Hà nội. i. i. Liệt kê tất cả hoán vị của n phần tử khác nhau. ii. Thuật toán: toán: Xét tất cả các phần tử ai với i=1..n i=1..n Bỏ phần tử ai ra khỏi dãy số h Ghi nhận đã lấy ra phần tử ai Hoán vị (Dãy số) Đưa phần tử ai vào lại dãy số h Nếu (Dãy số) rỗng thì thứ tự các phần tử được lấy ra chính là một hoán vị Bài toán tô màu (floodfill) iii. Phạm Thế Bảo Đệ quy hỗ tương3.3. Là dạng đệ quy mà trong đó việc gọi có xoay vòng, như A gọi B, B gọi C, và C gọi A. Đây là trường hợp rất phức tạp. p. Ví dụ: Đường Hilbert i. Đường Sierpinski ii. Phạm Thế BảoCác phương pháp khử đệ quyCá kh đệ Vòng lặp 1. Bằng stack 2. Phạm Thế BảoĐệĐệ quy Ví Ví dụ: Viết chương trình nhập số tự nhiên n và tính giai thừa : n!. Gi Giải quyết bài toán bằng vòng lặp #include 1. unsigned long int factorial(int n) factorial(int2. { unsigned long f = 1;3. for (int i = 1; iĐệĐệ quy Một hàm được gọi là đệ quy nếu như trong quá trình xử lý, hàm này có một lời gọi đến chính nó. nó. Gi Giải quyết bài toán bằng đệ quy #include 1. unsigned long int factorial(int n)2. { if(n==0) if(n==03. return 1;4. return (n* factorial(n-1)); factorial(n- ));5. }6. int main(void)7. { int n;8. printf(“Nhap n:”); scanf(“%d”, &n);9. printf(“n! = %d! = %l ”, n, factorial(n)); factorial(n));10. return 0;11. }12.Lời gọi hàm đệ quy và Điều kiệndừng của thuật giải đệ quy Bài Bài toán giải bằng thuật giải đệ quy phải có điều kiện h dừng. ng. Thu Thuật toán đệ quy trên máy tính có thể bị giới hạn bởi dung lượng bộ nhớ do lời gọi hàm liên tiếp.main factorial (4) factorial (3) factorial (2) factorial (1)Hãy vẽ sơ đồ tiến trình gọi hàm khi thực hiện tính dãy fibonacci bằngđệ quy. quy.Bài toán Tháp Hà NộiBài Thá Hà Có Có 3 cái cột và một chồng đĩa ở cột thứ nhất. Hãy chuyển chồng đĩa sang cột thứ ba với điều kiện mỗi lần di chuyển chỉ một đĩa và các đĩa bé luôn nằm trên đĩa lớn. n.ThTh u ậ t g i ả i Ch Chuyển (n-1) đĩa sang cột trung gian. n- an. Chuyển đĩa lớn nhất sang cột đích. Chuy ích. Ch Chuyển (n-1) đĩa từ cột trung gian sang cột đích. n-Cài đặCài đặt bằng đệ quy đệ MoveDisk(disk_number, starting_post, target_post, starting target1. intermediate_post) intermediate_post) {2. if(disk)number 1) if(disk)number > 1)3. {4.4. MoveDisk(disk_number- starting_post, MoveDisk(disk_number-1, starting_post,5. intermediate_post, target_post); intermediate target printf(“Move printf(“Move disk number %d, from post %d to post %d. ”, %d.6. disk_number, starting_post, target_post); disk_number, starting_post, target_post); MoveDisk(disk_number-1,intermediate_post,7. target_post, starting_post); target_post, starting_post); }8. else9. printf(“Move printf(“Move disk number 1 from post %d to post %d. ”, %d.10. starting_post, target_post); starting_post, target_post); }11.Bài toán Xếp Hậu (8 ...
Nội dung trích xuất từ tài liệu:
kỹ thuật lập trình C chuyên nghiệp phần 10 Tìm kiếm nhị phânii.ii.int searchBinary(int left,int right, intx){ if(left Đệ quy nhánh2.2. Là dạng đệ quy mà trong quá trình đệ quy, lời gọi được thực hiện nhiều lần. n. Ví dụ: Tháp Hà nội. i. i. Liệt kê tất cả hoán vị của n phần tử khác nhau. ii. Thuật toán: toán: Xét tất cả các phần tử ai với i=1..n i=1..n Bỏ phần tử ai ra khỏi dãy số h Ghi nhận đã lấy ra phần tử ai Hoán vị (Dãy số) Đưa phần tử ai vào lại dãy số h Nếu (Dãy số) rỗng thì thứ tự các phần tử được lấy ra chính là một hoán vị Bài toán tô màu (floodfill) iii. Phạm Thế Bảo Đệ quy hỗ tương3.3. Là dạng đệ quy mà trong đó việc gọi có xoay vòng, như A gọi B, B gọi C, và C gọi A. Đây là trường hợp rất phức tạp. p. Ví dụ: Đường Hilbert i. Đường Sierpinski ii. Phạm Thế BảoCác phương pháp khử đệ quyCá kh đệ Vòng lặp 1. Bằng stack 2. Phạm Thế BảoĐệĐệ quy Ví Ví dụ: Viết chương trình nhập số tự nhiên n và tính giai thừa : n!. Gi Giải quyết bài toán bằng vòng lặp #include 1. unsigned long int factorial(int n) factorial(int2. { unsigned long f = 1;3. for (int i = 1; iĐệĐệ quy Một hàm được gọi là đệ quy nếu như trong quá trình xử lý, hàm này có một lời gọi đến chính nó. nó. Gi Giải quyết bài toán bằng đệ quy #include 1. unsigned long int factorial(int n)2. { if(n==0) if(n==03. return 1;4. return (n* factorial(n-1)); factorial(n- ));5. }6. int main(void)7. { int n;8. printf(“Nhap n:”); scanf(“%d”, &n);9. printf(“n! = %d! = %l ”, n, factorial(n)); factorial(n));10. return 0;11. }12.Lời gọi hàm đệ quy và Điều kiệndừng của thuật giải đệ quy Bài Bài toán giải bằng thuật giải đệ quy phải có điều kiện h dừng. ng. Thu Thuật toán đệ quy trên máy tính có thể bị giới hạn bởi dung lượng bộ nhớ do lời gọi hàm liên tiếp.main factorial (4) factorial (3) factorial (2) factorial (1)Hãy vẽ sơ đồ tiến trình gọi hàm khi thực hiện tính dãy fibonacci bằngđệ quy. quy.Bài toán Tháp Hà NộiBài Thá Hà Có Có 3 cái cột và một chồng đĩa ở cột thứ nhất. Hãy chuyển chồng đĩa sang cột thứ ba với điều kiện mỗi lần di chuyển chỉ một đĩa và các đĩa bé luôn nằm trên đĩa lớn. n.ThTh u ậ t g i ả i Ch Chuyển (n-1) đĩa sang cột trung gian. n- an. Chuyển đĩa lớn nhất sang cột đích. Chuy ích. Ch Chuyển (n-1) đĩa từ cột trung gian sang cột đích. n-Cài đặCài đặt bằng đệ quy đệ MoveDisk(disk_number, starting_post, target_post, starting target1. intermediate_post) intermediate_post) {2. if(disk)number 1) if(disk)number > 1)3. {4.4. MoveDisk(disk_number- starting_post, MoveDisk(disk_number-1, starting_post,5. intermediate_post, target_post); intermediate target printf(“Move printf(“Move disk number %d, from post %d to post %d. ”, %d.6. disk_number, starting_post, target_post); disk_number, starting_post, target_post); MoveDisk(disk_number-1,intermediate_post,7. target_post, starting_post); target_post, starting_post); }8. else9. printf(“Move printf(“Move disk number 1 from post %d to post %d. ”, %d.10. starting_post, target_post); starting_post, target_post); }11.Bài toán Xếp Hậu (8 ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ lập trình C# tin học ứng dụng lập trình windows lập trình C# mẹo hay cho tin học thủ thuật windowsGợi ý tài liệu liên quan:
-
Tóm tắt Đồ án tốt nghiệp Công nghệ thông tin: Lập trình game với ứng dụng Unity
16 trang 472 0 0 -
Tóm tắt Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game 2D trên Unity
21 trang 345 1 0 -
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 238 0 0 -
Bài giảng Tin học lớp 11 bài 1: Giới thiệu ngôn ngữ lập trình C#
15 trang 234 0 0 -
101 trang 199 1 0
-
15 trang 198 0 0
-
20 trang 183 0 0
-
Cách gỡ bỏ hoàn toàn các add on trên Firefox
7 trang 181 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 177 0 0 -
Giáo trình Mạng máy tính (Nghề: Tin học ứng dụng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp
189 trang 164 0 0