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