Xử lý số nguyên bằng kỹ thuật đệ quy và khử đệ quy trong C


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

Đăng nhận xét

0 Nhận xét