Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: đệ quy phi tuyến, khó hiểu, giúp mình với

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    3

    Unhappy đệ quy phi tuyến, khó hiểu, giúp mình với

    mình đang gặp khó khăn phần đệ quy phi tuyến kho' hiểu qua'
    ai giúp mình với ,và chỉ mình giải bài

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    theo mình thực chất đệ quy phi tuyến là việc tạo các vòng lặp for lồng nhau, trong đó những vòng lặp for càng ở sâu bên trong thì chịu sự ràng buộc về điều kiện do các vòng lặp for bên ngoài tạo nên.
    chẳng hạn như với bài toán hoán vị số có 3 chữ số, bạn có thể giải quyết bằng cách tạo 2 (hoặc 3 tùy bạn) vòng lặp for lồng nhau, tại vòng lặp thứ nhất bạn gán một số cho phần tử tmp[0], vòng lặp thứ 2 bạn gán số (khác với tmp[0]) cho tmp[1], rồi tiếp tục gán số còn lại cho tmp[2] --> xuất kết quả.
    như vậy, nếu sử dụng thuật toán trên cho bài toán hoán vị n số, bạn sẽ phải tạo chương trình có n vòng lặp for lòng nhau, mà ko biết trước giá trị của n, do đó cách giải quyết là dùng đệ quy phi tuyến.

    /ý kiến của mình là vậy, có gì mong các bạn góp ý thêm

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    224

    đệ quy phi tuyến là cái gì vậy mấy anh ? Anh có thể post lý thuyết và ví dụ chia sẻ em với ???

  4. #4
    Ngày gia nhập
    01 2008
    Bài viết
    4

    Lý thuyết: Hàm được gọi là đệ qui phi tuyến nếu bên trong thân của hàm có lời gọi hàm lại chính nó được đặt bên trong thân vòng lặp

    Ví dụ: Tìm số hạng thứ n của dãy:
    x(0) = 1
    x(n) = (n^2)*x(0)+((n-1)^2)*x(1)+...+((n-i)^2)*x(i)+...+(2^2)*x(n-2)+(1^2)*x(n-1)
    Hàm cài đặ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;
    }
    Mình cũng đang học về đệ qui nên post cho bạn xem.

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Thank bạn nhé . Thế thì mình hiểu rồi . Có bài này chắc cũng đệ quy phi tuyến nhỉ ^^
    Đề : in ra tất cả hoán vị của n phần tử

    Code:
    #include <stdio.h>
    
    #define MAX 10
    int mang[MAX], n;
    
    void swap (int *x, int *y)
    {
      int tmp;
      tmp = *x;
      *x = *y;
      *y = tmp;
    }
    
    void hoanvi(int k)
    {
      int j;
    
      if (k==1)
      {
        printf("\n");
        for (j=0; j<n; j++)
          printf("%d ", mang[j]);
      }
      else
        for (j=k-1; j>=0; j--)
        {
          swap(&mang[k-1], &mang[j]);
          hoanvi(k-1);
          swap(&mang[j], &mang[k-1]);
        }
    }
    
    void main()
    {
      int i;
    
      printf("\nCho biet so phan tu (N < 10) : ");
      scanf("%d", &n);
      for (i=0; i<n; i++)
        mang[i] = i;
      hoanvi(n);
      getch();
    }

  6. #6
    Ngày gia nhập
    01 2008
    Bài viết
    4

    Mặc định đệ quy phi tuyến, khó hiểu, giúp mình với

    Có bài này chắc cũng đệ quy phi tuyến nhỉ ^^
    Đúng rồi bạn
    Đề : in ra tất cả hoán vị của n phần tử
    Cám ơn đã post bài này nhé, đệ qui mình cũng còn lơ mơ lắm (khó debug tay wá)...đang trong giai đoạn...học hỏi

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cám ơn đã post bài này nhé, đệ qui mình cũng còn lơ mơ lắm (khó debug tay wá)...đang trong giai đoạn...học hỏi
    Đệ qui là 1 thuật toán khó và rất hay, theo mình thì các thuật toán khác đều có bản chất đệ qui, bạn cứ học thật kĩ vào, nó sẽ có ích rất nhiều cho bạn sau này đó T_T!

  8. #8
    Ngày gia nhập
    01 2008
    Bài viết
    3

    Mặc định giải giùm mình bài này với

    xuất ra tất cả các dãy nhi phân chì dài n

  9. #9
    Ngày gia nhập
    01 2008
    Bài viết
    4

    Đệ qui là 1 thuật toán khó và rất hay, theo mình thì các thuật toán khác đều có bản chất đệ qui, bạn cứ học thật kĩ vào, nó sẽ có ích rất nhiều cho bạn sau này đó T_T!
    uh, mình cố học nó, cám ơn nhé
    xuất ra tất cả các dãy nhi phân chì dài n
    ====> ???????????????????????????????

  10. #10
    Ngày gia nhập
    09 2013
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi º┴¶† HACK †¶┴º Xem bài viết
    Lý thuyết

    Ví dụ: Tìm số hạng thứ n của dãy:


    Hàm cài đặ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;
    }
    sao hàm tìm số hạng thứ n lại như thế này bạn ? mình không hiểu chỗ code lắm ?? bạn giải thích cho mình với
    Chữ kí PRO

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

  1. mọi người ơi,giúp em bài về thư viện đi ạ,khó quá em làm không ra ạ
    Gửi bởi luungocly trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 04-12-2013, 07:02 PM
  2. Bài tập C++ Vào Giúp Mình Bài Đệ Quy Phi Tuyến (Khó) này với!!!!
    Gửi bởi phung123 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-04-2012, 10:13 PM
  3. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  4. Bài tập C Có bài mô phỏng khó quá, giúp mình với các pro
    Gửi bởi congdola trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 27-09-2011, 05:21 PM
  5. 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

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