Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 21

Chủ đề: Chương trình con

  1. #1
    Tham gia
    02-05-2008
    Bài viết
    50
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin Chương trình con

    Em chẳng hiểu sự khác nhau giữa đệ qui và vòng lặp. Ai giải thích giùm em với. Nếu tốt thì cho em ví dụ chương trình chỉ có phép đệ qui giải được hay chương trình chỉ có phép vòng lặp giải được. Cảm ơn mọi người.
    Quote Quote

  2. #2
    Tham gia
    25-09-2006
    Bài viết
    533
    Like
    0
    Thanked 1 Time in 1 Post
    V lặp là bạn chạy bộ vài vòng trên mặt đất, còn đệ qui là có thể bạn chạy trên chiếc xe buýt ...cũng.. đang chạy vậy ó

  3. #3
    Tham gia
    25-11-2007
    Location
    TP.HCM
    Bài viết
    100
    Like
    0
    Thanked 4 Times in 3 Posts
    Thực chất của đệ qui là một vòng lặp. Đúng như bạn thuonghcm nói, nếu ví vòng lặp là xe đạp thì đệ qui là ôtô. Thuật toán được viết dưới dạng đệ qui thì gọn hơn, dễ hiểu hơn và tối ưu hơn.

    VD : Tính lũy thừa : a^n

    - Vòng lặp

    var i:integer;
    s:longint;
    {Giả sử a và n nhập từ bàn phím}
    begin
    ...
    for i:=1 to n do s:=s*a;
    ...
    end.

    - Đệ qui

    function exp(a,n:integer):longint;
    begin
    if n=0 then exp:=1 else exp:=a*exp(a,n-1)
    end;

    Và có không ít bài toán chỉ giải được bằng đệ qui

  4. #4
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    đệ qui là "chia để trị"
    đúng là chạy vòng vòng ...
    nhưng qua cái ví dụ cũng thấy được sự khác nhau ...

  5. #5
    Tham gia
    02-05-2008
    Bài viết
    50
    Like
    0
    Thanked 0 Times in 0 Posts
    Làm ơn giải thích rõ hơn giùm em tại sao thuật toán giải bằng đệ qui lại tối ưu hơn vòng lặp?

  6. #6
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts

    Vui lắm !

    đúng vậy đệ qui thì rất tốt :
    cách viết ngắn gọn
    không phải bao giờ cũng tối ưu hơn đâu !
    rất khó để viết ra một chương trình đệ qui ,
    những bài toán đệ qui đều có thể giải bằng vòng lặp ( khử đệ qui , cái này thì mình không rành lắm )
    Đệ qui thì lại khá tốn không gian lưu trữ và thậm chí nó có thể lâu hơn vòng lặp
    lấy một ví dụ đơn giản
    để tính số fibonaci thứ 6
    ta viết chương trình đệ quy
    Code:
    if i=1 or i=2 then F[i]:=1
    else F[i]:=F[i-1]+F[[i-2];
    sơ đồ tính toán
    Code:
                       [f6]
                     /      \
                  [f4]       [f5]
                  / \        /  \ 
    [f2],[f1]--[f3] [f2]   [f4] [f3]--[f2];[f1]
                           /  \
            [f2];[f1]---[f3] [f2]
    rõ ràng f3 được tính đến 3 lần , f4 được tính 2 lần
    trong khi đó , với vòng lặp :
    Code:
    a:=1
    b:=1
    for i:=1 to 6 do
     begin
      c:=a+b;
      a:=b;
      b:=c;
     end;
    writeln(c);
    thì rõ ràng chỉ cần 3 biến và các số fibo không bị tính lại nhiều lần
    ...

  7. #7
    Tham gia
    02-05-2008
    Bài viết
    50
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình vẫn không hiểu là tại sao nó lại tính tới 2 lần

  8. #8
    Tham gia
    28-09-2007
    Location
    Vĩnh Yên-Vĩnh Phúc
    Bài viết
    1,167
    Like
    6
    Thanked 14 Times in 12 Posts
    Quote Được gửi bởi hung06061995 View Post
    Mình vẫn không hiểu là tại sao nó lại tính tới 2 lần
    trong đệ qui, trong khi tính f[6] thì có câu lệnh tính f[6-2]=f[4], trong khi tình f[5] cũng có câu lệnh gọi f[5-1]=f[4].vì vậy f[4]phải tính lại 2 lần(máy tính nó "ngu" lắm, không phân biệt được cái nào có rồi, cái nào chưa đâu)

  9. #9
    Tham gia
    02-05-2008
    Bài viết
    50
    Like
    0
    Thanked 0 Times in 0 Posts
    Ặc. VẪn khÔng hiỂu. ĐỪng ai nÓi mÌnh ngu nha.

  10. #10
    Tham gia
    28-07-2007
    Location
    Hà Nội
    Bài viết
    174
    Like
    0
    Thanked 0 Times in 0 Posts
    Ai cũng có lúc hiểu hay chưa hiểu chứ bạn,cho mình hỏi vậy thì sử dụng đệ qui tối ưu hơn là dùng vòng lặp ở những điểm nào và cách sử dụng đệ qui đc ko?

Trang 1 / 3 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •