Lập trình C - Tính giai thừa
Tính giai thừa trong C
Định nghĩa giai thừa: giai thừa của 1 số là tích các số liên tiếp từ 1 đến số đó. Trường hợp đặc biệt, giai thừa của 0 và 1 là 1.
Ví dụ: giai thừa của 5 là 1*2*3*4*5 = 120
Có 2 cách để viết chương trình tính giai thừa trong C:
- Tính giai thừa không sử dụng đệ quy.
- Tính giai thừ có sử dụng đệ quy.
Tính giai thừa không sử dụng đệ quy
Ví dụ chương trình tính giai thừa trong C không sử dụng phương pháp đệ quy:
/**
* Tinh giai thua KHONG dung phuong phap de quy
*
*/
#include<stdio.h>
/**
* tinh giai thua
*
* @author viettuts.vn
* @param n: so nguyen duong
* @return giai thua cua so n
*/
long tinhGiaithua(int n) {
int i;
long giai_thua = 1;
if (n == 0 || n == 1) {
return giai_thua;
} else {
for (i = 2; i <= n; i++) {
giai_thua *= i;
}
return giai_thua;
}
}
/**
* Ham main
*/
int main() {
int a = 5;
int b = 0;
int c = 10;
printf("Giai thua cua %d la: %d \n", a, tinhGiaithua(a));
printf("Giai thua cua %d la: %d \n", b, tinhGiaithua(b));
printf("Giai thua cua %d la: %d", c, tinhGiaithua(c));
}
Kết quả:
Giai thua cua 5 la: 120
Giai thua cua 0 la: 1
Giai thua cua 10 la: 3628800
Tính giai thừa có sử dụng đệ quy
Ví dụ chương trình tính giai thừa trong C có sử dụng phương pháp đệ quy:
/**
* Tinh giai thua su dung phuong phap de quy
*
*/
#include<stdio.h>
/**
* tinh giai thua
*
* @author viettuts.vn
* @param n: so nguyen duong
* @return giai thua cua so n
*/
long tinhGiaithua(int n) {
if (n > 0) {
return n * tinhGiaithua(n - 1);
} else {
return 1;
}
}
/**
* Ham main
*/
int main() {
int a = 5;
int b = 0;
int c = 10;
printf("Giai thua cua %d la: %d \n", a, tinhGiaithua(a));
printf("Giai thua cua %d la: %d \n", b, tinhGiaithua(b));
printf("Giai thua cua %d la: %d", c, tinhGiaithua(c));
}
Kết quả:
Giai thua cua 5 la: 120
Giai thua cua 0 la: 1
Giai thua cua 10 la: 3628800