codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include<stdio.h> #include<conio.h> #include<math.h> #define MAX 100 void nhap (int a[], int &n) { do { printf("\nNhap so phan tu: "); scanf("%d", &n); if(n <= 0 || n > MAX) { printf("\nSo phan tu khong hop le. Xin kiem tra lai !"); } }while(n <= 0 || n > MAX); for(int i = 0; i < n; i++) { printf("\nNhap a[%d]: ", i); scanf("%d", &a[i]); } } void xuat(int a[], int n) { if(n == 0) return; xuat(a, n - 1); printf("%4d", a[n - 1]); } int demPhanBiet_1(int a[], int n) { if(n < 1) return 0; if(n == 1) return 1; int dem = demPhanBiet_1(a, n - 1); int flag = 1; for(int i = 0; i <= n - 2; i++) { if(a[i] == a[n - 1]) flag = 0; } if(flag == 1) dem++; return dem; } // cải tiến: thêm điều kiện lặp để hạn chế số lần lặp kiểm tra int demPhanBiet_2(int a[], int n) { if(n < 1) return 0; if(n == 1) return 1; int dem = demPhanBiet_2(a, n - 1); int flag = 1; for(int i = 0; (i <= n - 2 && flag == 1); i++) { if(a[i] == a[n - 1]) flag = 0; } return dem + flag; } // cải tiến: tinh giản biến đếm bằng cách thực hiện lời gọi hàm đệ quy sau int demPhanBiet_3(int a[], int n) { if(n < 1) return 0; if(n == 1) return 1; int flag = 1; for(int i = 0; (i <= n - 2 && flag == 1); i++) { if(a[i] == a[n - 1]) flag = 0; } return flag + demPhanBiet_3(a, n - 1); } int main() { int n; int a[MAX]; nhap(a, n); xuat(a, n); int dem = demPhanBiet_3(a, n); printf("\nCo %d gia tri phan biet trong mang", dem); getch(); return 0; }
Private
[
?
]
Run code
Submit