Hàm đệ quy là một hàm bản thân nó tự gọi chính nó nhưng ở một giá trị khác.
1) Hàm in ra chữ số đầu tiên (VD: 173 in ra 1):
#include <stdio.h>
int timChuDauTien_DeQuy(int x) {
return x > 10 ? timChuDauTien_DeQuy(x/10) : x;
}
int main() {
timChuDauTien_DeQuy(682);
}
#include <stdio.h>
int timChuDauTien_KhuDeQuy(int x) {
while(x>10){
x/=10;
}
return x;
}
int main() {
timChuDauTien_KhuDeQuy(682);
}
6
2) Nghịch đảo số (VD: 123 thành 321)
#include <stdio.h>
int daoNguocSo_DeQuy(int x) {
int mu = log10(x);
int tmp = x % 10;
return x > 10 ?tmp * pow(10,mu) + daoNguocSo_DeQuy(x / 10) : x;
}
int main() {
daoNguocSo_DeQuy(452);
}
#include <stdio.h>
int nghichDaoSo_KhuDeQuy(int x) {
int tmp,number = 0;
while (x != 0)
{
tmp = x % 10;
number *= 10;
number += tmp;
x /= 10;
}
return number;
}
int main() {
nghichDaoSo_KhuDeQuy(452);
}
254
3) Kiểm tra chữ số toàn chẵn/lẻ
#include <stdio.h>
bool kiemTraSoToanChan_DeQuy(int x) {
if (x == 0) return true;
return x % 2 != 0 ? false : kiemTraSoToanChan_DeQuy(x/10);
}
int main() {
if(kiemTraSoToanChan_DeQuy(9426)) printf("Toan so chan");
else printf("Chu so khong toan chan");
}
#include <stdio.h>
bool kiemTraSoToanChan_KhuDeQuy(int x) {
int tmp;
while (x != 0)
{
tmp = x % 10;
if (tmp % 2 != 0) return false;
x /= 10;
}
return true;
}
int main() {
if(kiemTraSoToanChan_KhuDeQuy(9426)) printf("Toan so chan");
else printf("Chu so khong toan chan");
}
Chu so khong toan chan
0 Nhận xét