Danh mục

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    
Jamona

Phí tải xuống: miễn phí Tải xuống file đầy đủ (3 trang) 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;

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: