Kỹ thuật khử đệ quy
Số trang: 3
Loại file: doc
Dung lượng: 46.50 KB
Lượt xem: 12
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:
Đệ quy là quả tim trong các nghiên cứu lý thuyết cũng như thực hành tính toán, đã thể hiện rấtnhiều sức mạnh và có ưu điểm trong nhiều bài toán. Tuy nhiên bài này tôi lại đi ngược với côngviệc chúng ta thường làm: khử đệ quy, đó là vấn đề cũng có nhiều thú vị và đáng để chúng taxem xét.
Nội dung trích xuất từ tài liệu:
Kỹ thuật khử đệ quyKỹ thuật khử đệ quy Trần Đức ThiệnĐệquylàquảtimtrongcácnghiêncứulýthuyếtcũngnhưthựchànhtínhtoán,đãthểhiệnrất nhiềusứcmạnhvàcóưuđiểmtrongnhiềubàitoán.Tuynhiênbàinàytôilạiđingượcvớicông việcchúngtathườnglàm:khửđệquy,đólàvấnđềcũngcónhiềuthúvịvàđángđểchúngta xemxét.Khửđệquyởđâylàbiếnmộtthủtụcđệquythànhmộtthủtụcchỉchứavònglặpmàkhôngảnhhưởnggìđếncácyếutốkhác,chứkhôngphảilàthayđổithuậttoán.Vídụnhưtrongcáchàmđệquytínhn!vàsốFibonaciF(n)tacóthểthaybằngmộtvònglặpđểtính;Đókhôngphảilàphươngphápkhửđệquymàtôimuốnnói.Trongtrườnghợptổngquát,khửđệquylàmộtviệclàmkháphứctạpvàkhókhăn.ởhàmn!hayF(n)tacóthểdùngmộtthuậttoánkhôngđệquy,nhưngtrongmộtsốbàitoán,đệquylàbắtbuộc.Bạncóthểnóirằng,vậythìcứsửdụngđệquy,vừangắngọndễhiểu,vừadễcàiđặt.Nhưngcóđôikhi,sựhạnhẹpcủabộnhớdànhchochươngtrìnhconkhôngchophépchúngtalàmđiềuđó;hoặcchúngtabiếtrằng,ngônngữmáykhôngcóđệquy,vìvậycáctrìnhbiêndịchđềuphảicónhiệmvụkhửđệquy.Vàbạncóthểthựcsựgặprắcrốivớithủtụcđệquycủamìnhkhitrongmộtmôitrườnglậptrìnhmàkhôngcungcấpkhảnănggọiđệquy.Khửđệquygiúpbạnvẫngiữđượcnguyênbảnthuậttoánđệquycủamìnhmàkhônghềcólờigọiđệquy,vànhưthếchươngtrìnhcóthểchạyđượctrongbấtkỳmôitrườnglậptrìnhnào.Khửđệquythựcchấtlàchúngtaphảilàmcôngviệccủamộttrìnhbiêndịchđốivớimộtthủtục,đólà:Đặttấtcảcácgiátrịcủacácbiếncụcbộvàđịachỉcủachỉthịkếtiếpvàongănxếp(Stack),quyđịnhcácgiátrịthamsốchothủtụcvàchuyểntớivịtríbắtđầuthủtục,thựchiệnlầnlượttừngcâulệnh.Saukhithủtụchoàntấtthìnóphảilấyrakhỏingănxếpđịachỉtrảvềvàcácgiátrịcủacácbiếncụcbộ,khôiphụccácbiếnvàchuyểntớiđịachỉtrảvề.Đểdễtheodõichúngtalấyvídụvớibàitoáncụthểlàbàitoánduyệtcây.Giảsửcómộtcâynhịphânlưutrữtrongbiếnđộngtđượcđịnhnghĩa:type pnode = ^node;node = record inf : variable; { truong luu tru thong tin } l,r : pnode;end;var t : pnode;Xuấtpháttừnútgốct,cầnduyệtquahếtcâytheothứtựtừtráiquaphải.Chươngtrìnhconđệquysẽnhưsau:procedure Try(t : pnode);beginif t nil then begin visit(t); Try(t^.l); Try(t^.r); end;end;
Nội dung trích xuất từ tài liệu:
Kỹ thuật khử đệ quyKỹ thuật khử đệ quy Trần Đức ThiệnĐệquylàquảtimtrongcácnghiêncứulýthuyếtcũngnhưthựchànhtínhtoán,đãthểhiệnrất nhiềusứcmạnhvàcóưuđiểmtrongnhiềubàitoán.Tuynhiênbàinàytôilạiđingượcvớicông việcchúngtathườnglàm:khửđệquy,đólàvấnđềcũngcónhiềuthúvịvàđángđểchúngta xemxét.Khửđệquyởđâylàbiếnmộtthủtụcđệquythànhmộtthủtụcchỉchứavònglặpmàkhôngảnhhưởnggìđếncácyếutốkhác,chứkhôngphảilàthayđổithuậttoán.Vídụnhưtrongcáchàmđệquytínhn!vàsốFibonaciF(n)tacóthểthaybằngmộtvònglặpđểtính;Đókhôngphảilàphươngphápkhửđệquymàtôimuốnnói.Trongtrườnghợptổngquát,khửđệquylàmộtviệclàmkháphứctạpvàkhókhăn.ởhàmn!hayF(n)tacóthểdùngmộtthuậttoánkhôngđệquy,nhưngtrongmộtsốbàitoán,đệquylàbắtbuộc.Bạncóthểnóirằng,vậythìcứsửdụngđệquy,vừangắngọndễhiểu,vừadễcàiđặt.Nhưngcóđôikhi,sựhạnhẹpcủabộnhớdànhchochươngtrìnhconkhôngchophépchúngtalàmđiềuđó;hoặcchúngtabiếtrằng,ngônngữmáykhôngcóđệquy,vìvậycáctrìnhbiêndịchđềuphảicónhiệmvụkhửđệquy.Vàbạncóthểthựcsựgặprắcrốivớithủtụcđệquycủamìnhkhitrongmộtmôitrườnglậptrìnhmàkhôngcungcấpkhảnănggọiđệquy.Khửđệquygiúpbạnvẫngiữđượcnguyênbảnthuậttoánđệquycủamìnhmàkhônghềcólờigọiđệquy,vànhưthếchươngtrìnhcóthểchạyđượctrongbấtkỳmôitrườnglậptrìnhnào.Khửđệquythựcchấtlàchúngtaphảilàmcôngviệccủamộttrìnhbiêndịchđốivớimộtthủtục,đólà:Đặttấtcảcácgiátrịcủacácbiếncụcbộvàđịachỉcủachỉthịkếtiếpvàongănxếp(Stack),quyđịnhcácgiátrịthamsốchothủtụcvàchuyểntớivịtríbắtđầuthủtục,thựchiệnlầnlượttừngcâulệnh.Saukhithủtụchoàntấtthìnóphảilấyrakhỏingănxếpđịachỉtrảvềvàcácgiátrịcủacácbiếncụcbộ,khôiphụccácbiếnvàchuyểntớiđịachỉtrảvề.Đểdễtheodõichúngtalấyvídụvớibàitoáncụthểlàbàitoánduyệtcây.Giảsửcómộtcâynhịphânlưutrữtrongbiếnđộngtđượcđịnhnghĩa:type pnode = ^node;node = record inf : variable; { truong luu tru thong tin } l,r : pnode;end;var t : pnode;Xuấtpháttừnútgốct,cầnduyệtquahếtcâytheothứtựtừtráiquaphải.Chươngtrìnhconđệquysẽnhưsau:procedure Try(t : pnode);beginif t nil then begin visit(t); Try(t^.l); Try(t^.r); end;end;
Tìm kiếm theo từ khóa liên quan:
Công nghệ thông tin Phần cứng Kỹ thuật lập trình Tin học Quản trị mạng Kỹ thuật khử đệ quyGợi ý tài liệu liên quan:
-
52 trang 431 1 0
-
24 trang 358 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 318 0 0 -
74 trang 302 0 0
-
96 trang 296 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 283 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 277 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Tài liệu hướng dẫn sử dụng thư điện tử tài nguyên và môi trường
72 trang 267 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
64 trang 264 0 0
-
Bài giảng An toàn và bảo mật thông tin - Trường đại học Thương Mại
31 trang 255 0 0 -
20 trang 250 0 0
-
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 248 0 0 -
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 236 0 0 -
47 trang 231 0 0
-
Giáo trình Hệ điều hành: Phần 2
53 trang 221 0 0 -
Báo cáo tốt nghiệp: Tìm hiểu Proxy và ứng dụng chia sẻ Internet trong mạng LAN qua Proxy
38 trang 219 0 0 -
122 trang 217 0 0