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ố 18 kết quả

Đề tài: Dùng hàm đệ quy tìm ƯSCLN

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    2

    Mặc định Dùng hàm đệ quy tìm ƯSCLN

    các bác chỉ dùm em bài này với,em xin cảm ơn nhiều a.!
    Dùng hàm đệ quy tìm ước số chung lớn nhất của 2 số X và Y có thể được dịnh nghĩa như sau:
    + ƯSC lớn nhất (X,Y)=X nếu Y=0
    + ƯSC lớn nhất (Y,phần dư của X/Y) nếu Y khác 0.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    bài này trong sách thầy Lôi đây mà
    bài giải của mình :
    C++ Code:
    1. int USCLN(int x,int y)
    2. {int r;
    3.     if(x<y)
    4.     {
    5.         r=x;
    6.         x=y;
    7.         y=r;
    8.         }
    9.     if(r=x%y)
    10.     {
    11.         x=y;
    12.         y=r;
    13.         return(USCLN(x,y));
    14.         }
    15.     return y;
    16.         }
    hoặc viết gọn lại cho tiết kiệm là
    C++ Code:
    1. int USCLN(int x,int y)
    2. {int r;
    3.     if(x<y)
    4.     {
    5.         r=x;
    6.         x=y;
    7.         y=r;
    8.     }
    9. return ((r=x%y)?USCLN(y,r):y);
    10. }
    @co7seo: bạn đang học lớp cấu trúc dữ liệu giải thuật ngày thứ 3 tại D3 301(4 tiết đầu) thầy Tuấn Anh dạy đúng không ??? Nếu đúng thì chắc bạn đang học cùng lớp với mình , còn nếu không phải thì bạn cứ coi như 1 câu
    hỏi vu vơ thôi nhé. Mình hỏi câu này vì trên lớp tuần trước vừa học xong, thầy bảo làm bài tập, mà hôm nay đã có người hỏi về bài tập rồi.
    Đã thế bạn lại vừa ra nhập forum vào tháng 2, quá nhiều điều trùng hợp.
    Đã được chỉnh sửa lần cuối bởi quangnh89 : 26-02-2009 lúc 01:07 PM. Lý do: bổ sung thêm

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Tham khảo thêm cái này nhé!

    C++ Code:
    1. #include <iostream>
    2.  
    3. int UCLN(int a, int b)
    4. {
    5.     if (b==0) return a;
    6.     return UCLN(b,a%b);
    7. }
    8.  
    9. int main()
    10. {
    11.     std::cout << UCLN(5,20);
    12. }

  4. #4
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Giải thuật đệ quy về UCLN có rất nhiều như các bạn đã post ở trên, mình xin đóng góp 1 giải thuật khác không phải đệ quy mà dùng vòng lặp cho vui nha :

    PHP Code:
    int USCLN(int aint b)
    {
          
    abs(a);
          
    abs(b);
          while (
    && b)
                if (
    b)  -= b;
                else 
    -= a;
          if (
    == 0)
                return 
    b;
          else
                return 
    a;

    Đã được chỉnh sửa lần cuối bởi trubavuong : 26-02-2009 lúc 06:26 PM.

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    int GCD(int a, int b)
    {
    return a == 0 ? b : GCD(b%a, a);
    }

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

    Mặc định Dùng hàm đệ quy tìm ƯSCLN

    Em có bài đệ quy như sau
    Code:
    #include<iostream.h>
    #include<conio.h>
    
    class songuyen
    {
    	int x;
    	public:
    		songuyen();
    		void nhap();
    		friend int ucln(songuyen a,songuyen b);
    		friend void hien();
    };
    
    songuyen::songuyen()
    {
    	x=0;
    }
    
    void songuyen::nhap()
    {
    	cout<<"Nhap vao so nguyen: ";
    	cin>>x;
    }
    
    int ucln(songuyen a,songuyen b)
    {
    	int n,ucl;
    	n=((a.x<b.x)?a.x:b.x);
    	for(int i=n;i>0;i--)
    		if((a.x%i==0)&&(b.x%i==0))
    			{ucl=i;break;}
    	return ucl;
    }
    
    void hien()
    {
    	cout<<"Uoc chung lo nhat la: "<<ucln(a,b);
    }
    
    void main()
    {
    	
    	songuyen a;
    	a.nhap();
    	songuyen b;
    	b.nhap();
    	ucln(a,b);
    		
    }
    Về thuật toán em làm thì đúng và nếu in kết quả bằng cout ngay trong hàm ucln() thì ra rồi, nhưng em muốn in ra bằng hàm hiện thì nó báo lỗi, các bác sửa giúp em với

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

    Code:
    void hien()
    {
    	cout<<"Uoc chung lo nhat la: "<<ucln(a,b);
    }
    trong scope của hàm hiện ko biết a là gì, b là gì thì hiện bằng ... niềm tin ?
    => truyền đối số a, b vào hàm hiện
    code ra gió bão

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

    Truyền kiểu gì đây bạn ơi, nói hộ đoạn code với, mình đang mông lung đoạn truyền thế này, bạn giải thích rõ thếm với

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

    Code:
    void hien(songuyen a,songuyen b)
    {
    ....
    }
    code ra gió bão

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    2

    @Quangnh89:cảm ơn bác nhé.không cùng lớp đó đâu.trùng bài là chuyện thường mà.
    Cảm ơn tất cả các bác đã nhiệt tình giúp đỡ.

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

  1. Giải thích giúp Giải thuật Euclid (tìm ƯSCLN)
    Gửi bởi duoirong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 15-04-2015, 12:06 PM
  2. Upload file dùng Ajax mà ko dùng Method Post của Form như thế nào?
    Gửi bởi hieupxd2cntt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 8
    Bài viết cuối: 14-09-2014, 10:23 PM
  3. Bài toán quản lí nhân viên dùng dùng danh sách liên kết trong C++. Mong mọi người góp ý!
    Gửi bởi rataki trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 22-11-2012, 11:26 PM
  4. Bài tập C++ Dùng strtok cắt chuỗi và lỗi khi dùng atof() chuyển char sang float
    Gửi bởi salomontong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 10-03-2012, 05:18 PM
  5. Tìm ƯSCLN và tìm BSCNN trên C++, giúp mình với?
    Gửi bởi E0k3y trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 07-12-2009, 02:52 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