Breaking News
Loading...
Monday, December 5, 2011

Tổng hợp Bài Tập Đệ Quy

12/05/2011 12:04:00 PM

1/ In đảo ngược số n nguyên dương

void InDaoNguoc(int n)
{
    if(n!=0)
{
cout<<n%10;
InDaoNguoc(n/10);
}
}

2/ Đếm số lượng chữ số nguyên dương n

int DemSL(int n)
{
    if(n==0)
        return 0;
    return 1+DemSL(n/10);
}
3/ Tìm chữ số có giá trị lớn nhất của số nguyên dương n

long ChuSoLonNhat(long n,long &max)
{   
    long m;
    if(n==0)
         return max;
    else
    {
        m=n%10;
        if(m>max)
             max=m;
    }    
    return ChuSoLonNhat(n/10,max);
}

4/ Tìm giá trị nguyên  logarit cơ số 2 của n

int Logarit(int n)
{
       if(n<0)
              return -1;
    else
          if(n>=2)
                   return 1+logarit(n/2);
        else
        return 0;
}


5/ Đổi sang hệ nhị phân của số nguyên dương n

void NhiPhan(int n)
{
      if(n!=0)
       {
             NhiPhan (n/2);
            cout<<n%2;
        }
}
             HOẶC

 long NhiPhan(int a)
{
    long b;
    if(a==0)
         return 0;
    else
         b=a%2;
    return NhiPhan(a/2)*10+b;
}


6/ Tìm ước số chung lớn nhất của 2 số nguyên a, b.

int UCLN(int a,int b)
{
       if(a==b)
        return a;
    else
    {
            if(a>b)
                    a=a-b;
           else
                  b=b-a;
     }
    return UCLN(a,b);
}


7/ Tìm chữ số đầu tiên của số nguyên dương n.

int ChuSoDauTien(int a)
{

if(a<10)
         return a;
    else
        return ChuSoDauTien(a/10);
}

8/ Tính  P(n)=1.3.5...(2n+1) với n>=0

long Tich(int n)
{
    if(n==0)
return 1;
else
     return(2*n+1)* Tich(n-1);
}
9/ Tính S(n)=1+3+5+…+(2.n+1) với n>=0

long  Tong(unsigned n)
{
    if(n==0)
        return 1;
    return n+Tong(n-2);
}

10/ Tính S(n)=1-2+3-4+…+ ((-1)^(n+1)).n với n>0


int Tong(usigned  n)
{
    if(n==0)
        return 0;
    return pow(-1,(double)n+1)*n+Tong(n-1);
}
//pow(-1,n+1)=(-1)^(n+1)
HOẶC
int Tong(usigned  n)
{
    if(n==0)
        return 0;
    if(n%2==0)
        return –n+Tong(n-1);
    return n+Tong(n-1);
}

11/ Tính S(n)=1+1.2+1.2.3+…+1.2.3…n với n>0

long GiaiThua(int n)
{

if(n==1)
{
    return 1;
}

  return GiaiThua(n-1)*n;
}

long Tong(int n)

{

      if(n == 1)

{

    return 1;
}

      return Tong(n-1) + GiaiThua(n-1)*n;

}

12/ Tính S(n)=1^2+2^2+3^2+....+n^2 với n>0

long TongBinhPhuong(int n)
{

if(n<=1)
    return 1;
    else
         return n*n+ TongBinhPhuong(n-1);
}

13/ Tính P(x,y)=x^y

float LuyThua(int x,int y)
{
    if(y==0)
         return 1;
    else
             if(y<0)
                     return LuyThua(x,y+1)*(float)1/x;
            else      
        return x*LuyThua(x,y-1);
}

14/ Tính S(n) = 1 + 1/2 + 1/3 + ... + 1/n với n>0

float Tinh(float n)
{    
if (n==1)
        return 1;
     return Tinh(n-1) + 1/n;
}


15/ Tính S(n)=1+1/2+1/(2.4)+1/(2.4.6)+…+1/(2.4.6.2n) với n>0

float T (unsigned n)
{
    if(n==0)
return 1;
return T(n-1)*2*n;
}
float  Tong(unsigned n)
{
    if(n==0)
        return 1;
    return Tong(n-1)+1/T;
}


Click vào đây để xem các bài tập khác.
Click vào đây để tham khảo tài liệu về Đệ quy .

6 comments:

  1. Rất hay, cảm ơn bạn nhiều.

    ReplyDelete
  2. Bạn có code đệ quy bài k, share giúp mình với, mình đang bí chỗ này.
    Sắp xếp thứ tự tăng hoặc giảm dần dãy số nguyên n ký tự. ví dụ: nhập 456321 ==> 123456.
    Thanks bạn nhé

    ReplyDelete
  3. cho mảng A gồm (n+1) nguyên dương biểu diễn cây nhị phân hoàn chỉnh có n nút. Hãy viết 1 hàm trong C với đầu vào là mảng A và số nguyên n, trả về tổng số nút có 2 con trên cây? ai giúp mình với

    ReplyDelete
  4. cho mảng A gồm (n+1) nguyên dương biểu diễn cây nhị phân hoàn chỉnh có n nút. Hãy viết 1 hàm trong C với đầu vào là mảng A và số nguyên n, trả về tổng số nút có 2 con trên cây? ai giúp mình với

    ReplyDelete
  5. Bài 6 .
    //Giả sử a> b
    public int UCLN (int a, in b) {
    if(b==0) return a;
    retrun UCLN(b,a%b);
    }

    ReplyDelete

 
Toggle Footer