Announcement

Collapse
No announcement yet.

Hỏi về đệ qui qui hồi.(truy hồi)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Hỏi về đệ qui qui hồi.(truy hồi)

    Anh chị nào siêu bên phần đệ qui qui hồi thì giúp em làm rõ cả về thuận toán lẫn sơ đồ khối đi,vì em mới học lên phần đệ qui nâng cao,khó quá.gặp toàn đệ qui có chứa vòng lặp,chạy loạn tung cả lên ngồi nghĩ sao cho ra.đã vậy mà hỏi thầy cô thì ...(not available) e mới k8 thôi.mong a chị giúp em làm rõ phần này.vì e bên khoa học máy tính mà nghe nói lập trình cơ bản phải vững mới được nên em rất muốn chỉ cho rõ cho nền tảng sau này
    còn nếu thấy e nói chung quá thì mong anh chị nhiệt tình làm rõ giúp e 2 bài nàyem cũng đã search google nhưng vẫn chưa hiểu,nó cứ lơ mơ với cái đám vừa có for trong đám đệ qui lung tung này)
    1. Viết hàm nhận vào hai số n và m, xuất ra màn hình tất cả các số có n chữ số
    trong hệ cơ số m
    source code của thầy:
    PHP Code:
    void print_co_so(int nint co_soint hien_tai 0int temp 0){
    if (
    hien_tai == n){
    printf("%d\n"temp);
    return;
    }
    for (
    int i = (hien_tai 1); co_soi++){
    temp = (temp) * 10 i;
    print_co_so(nco_sohien_tai 1temp);
    temp temp/10;
    }

    2/Bài toán tháp Hà Nội(e cũng đã search,wiki cũng đã giải thích nhưng cứ lơ mơ thế nào,xem hình chạy chạy thì lại càng mơ hồ về qui luật truy hồi của nó)
    bài giải thì thấy có 2 code đều chạy đúng,chắc nó cùng nguyên tắc:
    PHP Code:
    #include <stdio.h>



    void chuyen(int sodiachar CotNguonchar CotDichchar CotTG)
    {
            if (
    sodia>0)
            {
               
    chuyen(sodia-1CotNguonCotTGCotDich);
               
    printf("%c --> %c\n",CotNguon,CotDich);
               
    chuyen(sodia-1CotTGCotDichCotNguon);
            }
    }
    int main()
    {
        
    char CotNguon,CotDich,CotTG;
         
    int n;
         
    printf("nhap n:");
         
    scanf("%d",&n);
         
    chuyen(n,'A','C','B');
         return 
    0;

    PHP Code:
    #include <stdio.h>

    int n;
    char A={'A'}, B={'B'}, C={'C'};


    void Move(int nchar Achar Bchar C)
    {
        if(
    n==1)
            
    printf("%c --> %c\n"AB);
        else{
            
    Move(n-1ACB);     //chuyen tu TG-D,
            
    Move(1ABC);
            
    Move(n-1CBA);
        }
    }


    int main(){
        
    scanf("%d",&n);

        
    Move(nABC);

        return 
    0;

    Mong anh chị chỉ rõ giúp em bằng cách nào đó.thank trước
    (nếu em ngu quá thì chịu nhưng a chị ráng giúp e chứ e vốn hay khó chịu với cái gì mà e ko giải quyết rõ,thường thì e mất quá thời gian vào nó,mà thời gian e cũng bận qua)

  • #2
    Trước khi cố gắng hiểu bài này em đã làm hết những bài cơ bản chưa ?

    Comment


    • #3
      Máy bài cơ bản em làm hết rồi,ổn cả.nhưng mà mấy bài cơ bản dể hình dung hơn với từ bài toán trở ngược lại code thì dễ chứ còn mấy bài này thì rối quá thầy ơi

      Comment


      • #4
        em cứ debug bằng giấy.. từng dòng thì sẽ thông ngay. học đệ quy trước tiên phải hiểu cách nó tiếp cận lời giải, rồi debug giấy chừng chục bài

        Comment


        • #5
          có anh chị,thầy cô nào giúp em nữa không?
          đặc biệt là dạng đệ qui truy hồi ấy,em thấy mình không lường được chỗ nào nó se xuất ra kết quả mình cần,thuật toán thì thấy nó đúng,nhưng khi dùng viết code thì nó sao ấy ạ.như dạng là phần n tính theo phần n-1,phàn n-1 tính theo phàn n-2,tương tự rồi gọi đệ qui nhưng có điều là vòng for nhảy vào rồi điều kiện dừng nó nằm ở chổ nào nửa.e mất cả tuần mà vẫn gà,giỏi lắm thì mấy bài nào em thấy dựa vào dược nhưng thuật toán từng đọc thì e còn làm được,còn hơi mới lạ tí thì lại chẳng làm được gì

          Comment


          • #6
            Cùng câu hỏi!
            Thảo ơi, t cũng đang rối nhưng không biết hỏi ai...
            Mong, ngóng, đợi, trông...
            Khi tất cả những cái khác đã mất đi thì tương lai vẫn còn

            Bové

            Comment


            • #7
              Để giải được một bài toán theo cách thức đệ quy thì em phải xác định được công thức tổng quát của nó, và điều kiện dừng của nó là gì.
              Đối với hai bài toán:
              + Bài toán 1, em có thể thử lấy một ví dụ và chạy code bằng tay. Chắc chắn em sẽ nhận thấy được quy luật tính toán của tác giả.
              + Bài toán tháp Hà Nội: thử lấy 3 hoặc 4 quyển tập ra rồi xếp thử theo thuật toán của bài giải nhé.

              Comment

              LHQC

              Collapse
              Working...
              X