Bài tập de quy có lời giải c++ năm 2024

Bài 1 : In đảo ngược n số nguyên dương

void InDaoNguoc(int n)

{

if(n!=0)

{

cout<

InDaoNguoc(n/10);

}

}

Bài 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);

}

Bài 3 : Tìm chữ số có giá trị lớn nhất của số nguyên dương n

1

2

3

4

5

6

7

8

9

10

11

12

13

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);

}

Bài 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;

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

void NhiPhan(int n)

{

if(n!=0)

{

NhiPhan (n/2);

cout<

}

}

HOẶC

long NhiPhan(int a)

{

long b;

if(a\==0)

return 0;

else

b\=a%2;

return NhiPhan(a/2)*10+b;

}

Bài 6 : 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);

}

Bài 7 : 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);

}

Bài 8: Tính S(n)=1-2+3-4+…+ ((-1)^(n+1)).n với n>0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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);

}

Bài 9 : Tính S(n)=1+1.2+1.2.3+…+1.2.3…n với n>0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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;

}

Bài 10 : 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);

}

Bài 11 : 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);

}

Bài 12 : 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;

}

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

1

2

3

4

5

6

7

8

9

10

11

12

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;

}

Bài 14 : 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);

}

Bài 15 :Tìm ước số chung lớn nhất của 2 số nguyên a, b.

1

2

3

4

5

6

7

8

9

10

11

12

13

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);

}