Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Đệ quy phi tuyến

  1. #1
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    Angry Đệ quy phi tuyến

    Code:
    long TinhXn (int n)
    {
         if(n==0)
                return 1;
         long s = 0;
         for (int i=1; i<=n; i++)
              s = s + i * i * TinhXn(n-i);
         return s;
    }
    vd n=3. Có bạn nào giải thích giúp mình cách hoạt động của hàm TinhXn với?
    với: Xo = 1; Xn = n*n*Xo + (n-1)*(n-1)*X1 +...+ 1*1*X(n-1).
    IF YOU ARE ALONE , I'LL BE YOUR SHADOW
    IF YOU WANT TO CRY, I'LL BE YOUR SHOULDER
    IF YOU NEED HAPPY, I'LL BE YOUR SMILE
    BUT ANYTIME YOU NEED A FRIEND
    IT JUST BE ME !!!

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    chạy debug đi bạn ơi.
    có gì gặp vấn đề nếu chưa hiểu thì đưa lên đây, mọi người trả lời cho.
    theo mình chạy debug là cách tốt nhất để học lập trình. bạn sẽ thấy rõ nó chạy ra sao luôn.

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi fire_dragon14988 Xem bài viết
    Code:
    long TinhXn (int n)
    {
         if(n==0)
                return 1;
         long s = 0;
         for (int i=1; i<=n; i++)
              s = s + i * i * TinhXn(n-i);
         return s;
    }
    vd n=3. Có bạn nào giải thích giúp mình cách hoạt động của hàm TinhXn với?
    với: Xo = 1; Xn = n*n*Xo + (n-1)*(n-1)*X1 +...+ 1*1*X(n-1).
    Trích dẫn Nguyên bản được gửi bởi zkday2686 Xem bài viết
    chạy debug đi bạn ơi.
    có gì gặp vấn đề nếu chưa hiểu thì đưa lên đây, mọi người trả lời cho.
    theo mình chạy debug là cách tốt nhất để học lập trình. bạn sẽ thấy rõ nó chạy ra sao luôn.
    mới học C làm gì đã biết debug ???

    đây là đệ quy phi tuyến

    mẫu chung của 1 đệ quy phi tuyến :
    PHP Code:
    void ten(...)
        {
            for (
    i=1;i<=n;i++)
                {
                    
    //lam 1 viec gi do
                    
    if <dieu kien dung>
                        {
                            
    //lam 1 viec gi do
                        
    }
                    else           
                        {
                            
    goi de quy
                        
    }
                }
        } 
    để hiểu vấn đề hoạt động bạn nên tìm hiểu nguyên tắc làm việc của đệ quy trước.

    Mình chỉ muốn góp ý : đệ quy phi tuyến là 1 phương pháp hay nhưng lại là 1 giải pháp tồi.

    Đệ quy nói chung là 1 phương pháp giải bài tập hay nhưng trên khía cạnh chương trình thì là 1 giải pháp tồi .
    Hay : lời giải rút gọn và dễ hiểu
    Tồi : Nhược điểm của đệ quy : dễ bùng nổ bộ nhớ tạm thời gây ra over head ........và dễ gây ra lỗi do điều kiện chủ chốt.
    Ct đệ quy chạy ko tối ưu về bộ nhớ .


    trở về bài toán :

    PHP Code:
      s TinhXn(n-i); 
    khi gặp dòng này nó sẽ tạm dừng công việc hiện tại lại và xử lý : TinhXn(n-i);
    trước .
    Trong tinhxn(n-i) lại có tinhxn(..) nên nó lại tạm dừng công việc tại đó và tính cái tinhxn() trước cái bên trên.

    ok????
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    Code:
    void Nhap(int a[], int n)
    {
        if(n==0)      return; //lệnh return này sẽ trả về giá trị cho hàm là gì vậy?
        Nhap(a, n-1);
        printf("Nhap phan tu cho mang: ");
        scanf("%d",&a[n-1]);
    }
    IF YOU ARE ALONE , I'LL BE YOUR SHADOW
    IF YOU WANT TO CRY, I'LL BE YOUR SHOULDER
    IF YOU NEED HAPPY, I'LL BE YOUR SMILE
    BUT ANYTIME YOU NEED A FRIEND
    IT JUST BE ME !!!

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi fire_dragon14988 Xem bài viết
    Code:
    void Nhap(int a[], int n)
    {
        if(n==0)      return; //lệnh return này sẽ trả về giá trị cho hàm là gì vậy?
        Nhap(a, n-1);
        printf("Nhap phan tu cho mang: ");
        scanf("%d",&a[n-1]);
    }
    hàm này là hàm void nên return không có trả trị gì hết. Đơn giản là nó quay về hàm gọi nó trước đó.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Đệ quy phi tuyến

    Trích dẫn Nguyên bản được gửi bởi fire_dragon14988 Xem bài viết
    Code:
    void Nhap(int a[], int n)
    {
        if(n==0)      return; //lệnh return này sẽ trả về giá trị cho hàm là gì vậy?
        Nhap(a, n-1);
        printf("Nhap phan tu cho mang: ");
        scanf("%d",&a[n-1]);
    }
    ý lệnh của lệnh return là trả về giá trị đứng sau nó và thoát khỏi hàm. Ở đây nếu n==0 nó sẽ thoát khỏi hàm do đó sẽ dẫn đến việc kết thúc đệ quy.

    bài này là đệ quy tuyến tính.

    Để hay hơn nên chuyển điều kiện dừng là :
    if (n<=0 )...
    tại sao vậy : ?????

    để chẳng may do 1 lỗi nào đó ( quá trình nhập chẳng hạn ) ta lại đem sử dụng với n<0 =>>>>>>>>> sẽ gây ra treo máy .
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  7. #7
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    Great! Thanks
    IF YOU ARE ALONE , I'LL BE YOUR SHADOW
    IF YOU WANT TO CRY, I'LL BE YOUR SHOULDER
    IF YOU NEED HAPPY, I'LL BE YOUR SMILE
    BUT ANYTIME YOU NEED A FRIEND
    IT JUST BE ME !!!

Các đề tài tương tự

  1. Code kiểm tra lược đồ quan hệ có nguy cơ xảy ra mâu thuẫn tuyến tuyến tính và phi tuyến
    Gửi bởi computerline trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 13-05-2011, 03:56 PM
  2. Phụ thuộc hàm dẫn đến mâu thuẫn, dẫn đến tuyến tính, dẫn đến phi tuyến?
    Gửi bởi kaka391989 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 26-03-2011, 09:24 PM
  3. phương trình tuyến tính
    Gửi bởi ngoquocthien trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 11-03-2009, 05:09 PM
  4. Từ điển trực tuyến | Gợi ý cho em về CSDL cho 1 từ điển trực tuyến với.
    Gửi bởi bachdung87 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 2
    Bài viết cuối: 08-10-2008, 12:02 PM

Quyền hạn của bạn

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