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

Đề tài: [Solved] Đệ quy, quay lui

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

    Question [Solved] Đệ quy, quay lui

    đây là code bài liệt kê dãy nhị phân có độ dài n của em
    nhưng mà đoạn quay lui thì đúng mà viết ra không đúng nới xem giùm em với huhu
    Code:
    #include<stdio.h>
    #include<conio.h>
    void viet(int b[],int n)
    {       int i;
    	for(i=1;i<=n;i++)
    
    		printf("%d",b[i]);
    		printf("\n");
    }
    void try1(int i,int n)
    {       int j,b[10];
    	for(j=0;j<=1;j++)
    	{
    		b[i]=j;
    		if (i==n) viet(b,n);
    		else try1(i+1,n);
    
    	}
    }
    void main()
    {
    	int n,i;
    	clrscr();
    	printf("nhap n");
    	scanf("%d",&n);
    	try1(1,n);
    getch();
    }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 22-09-2008 lúc 08:23 AM.

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

    hic, chả biết code này dùng để làm gì luôn !
    Đoạn code dưới bị sai ( chỗ biến n )
    C Code:
    1.    int *n,i,b[10]; // *n trỏ vào đâu ? b mang giá trị gì và dùng để làm gì ( ko thấy b được sử dụng ) ?
    2.    clrscr();
    3.    printf("nhap n");
    4.    scanf("%d",&*n); // &*n là tối nghĩa vì & và * là ngược nhau, scanf sẽ nhập vào vị trí ô nhớ rác do n trỏ tới
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 21-09-2008 lúc 05:38 PM.
    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.

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

    mình xin lỗi bạn meolongvang..vì mình mới học con trỏ nên thử áp dụng vô cho thử ^^..thông cảm cho mình nha jio mình sửa lại rùi..bạn coi giúp mình với..đây là bài liệ kê dãy nhị phân N dùng đệ quy quay lui(hay là thử sai quay lui)..bạn add watch và xem lại giúp mình với cám ơn nha

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

    đây là bài liệt kê tất cả các dãy nhị phân của n phàn tử..bằng thuật toán "thử sai quay lui"
    đây là code đúng khi mà khi báo b[10] là biến toàn cục
    Code:
    #include<stdio.h>
    #include<conio.h>
    int n,i,b[10];
    void viet()
    {
    	for(i=1;i<=n;i++)
    
    		printf("%d",b[i]);
    		printf("\n");
    }
    void try1(int i)
    {       int j;
    	for(j=0;j<=1;j++)
    	{
    		b[i]=j;
    		if (i==n) viet();
    		else try1(i+1);
    
    	}
    }
    void main()
    {
    	clrscr();
    	printf("nhap n");
    	scanf("%d",&n);
    	try1(1);
    getch();
    }
    còn đây là code sai mà em không bít là sai chỗ nào khi b[10] ở trong chương trình con
    Code:
    #include<stdio.h>
    #include<conio.h>
    int n;
    void viet(int b[])
    {       int i,n=3 ;
    	for(i=1;i<=n;i++)
    
    		printf("%d",b[i]);
    		printf("\n");
    }
    void try1(int i)
    {       int j, b[10];
    	for(j=0;j<=1;j++)
    	{
    		b[i]=j;
    		if (i==n) viet(b);
    		else try1(i+1);
    
    	}
    }
    void main()
    {
    
    	clrscr();
    	printf("nhap n");
    	scanf("%d",&n);
    	try1(1);
    getch();
    }
    các bạn test thử rùi cho mình biết thíu sót chỗ nào nha thanks

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

    Khi biến b là một biến của hàm con, thì cứ một lần nó gọi lại đệ qui thì nó sẽ cấp phát cho b một địa chỉ khác.(b lần i với b lần i+1 khác nhau.)

    do đó chương trình của bạn chạy ra kết quả sai là đúng rồi.


    chúc bạn thành công.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 21-09-2008 lúc 11:37 PM.

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

    Mặc định [Solved] Đệ quy, quay lui

    Trích dẫn Nguyên bản được gửi bởi thanhlinhhue Xem bài viết
    mình xin lỗi bạn meolongvang..vì mình mới học con trỏ nên thử áp dụng vô cho thử ^^..thông cảm cho mình nha jio mình sửa lại rùi..bạn coi giúp mình với..đây là bài liệ kê dãy nhị phân N dùng đệ quy quay lui(hay là thử sai quay lui)..bạn add watch và xem lại giúp mình với cám ơn nha
    Có gì đâu mà bạn xin lỗi. Đây là code mình sửa lại nè :

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. void viet(int *b, int n)
    5. {
    6.     for(int i=1;i<=n;i++)
    7.         printf("%d",b[i]);
    8.     printf("\n");
    9. }
    10.  
    11. void try1(int i, int *b, int n)
    12. {
    13.     for(int j=0;j<=1;j++)
    14.     {
    15.         b[i]=j;
    16.         if (i==n)
    17.             viet(b,n);
    18.         else
    19.             try1(i+1,b,n);
    20.  
    21.     }
    22. }
    23.  
    24. void main()
    25. {
    26.     int b[10];
    27.     int n;
    28.  
    29.     clrscr();
    30.     printf("nhap n ");
    31.     scanf("%d",&n);
    32.     try1(1,b,n);
    33.     getch();
    34. }
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 21-09-2008 lúc 11:56 PM.
    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.

  7. #7
    Ngày gia nhập
    07 2008
    Bài viết
    30

    uh cám ơn nhiều nha

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

  1. Lò quay vịt, lu quay vịt Bắc kinh dùng than giá rẻ tại đây - 0975512038 - www.thanglongco.vn
    Gửi bởi thanglongco.vn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 23-09-2013, 12:53 PM
  2. Máy Quay HD Sony, máy quay sony Handycam, máy quay kỹ thuật số, máy quay phim mới tinh Mo
    Gửi bởi dientuthaithang trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 472
    Bài viết cuối: 03-08-2012, 05:16 PM
  3. Đồ chơi công nghệ thế kỷ 21:Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 06-08-2011, 10:47 PM
  4. Thiết bị thám tử: Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 17-07-2011, 08:23 AM
  5. Quay mũi tên quanh một điểm với góc quay 45 độ?
    Gửi bởi salinh trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 28-11-2008, 01:39 AM

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