Tìm n giai thừa (n!) là một bài tập lập trình căn bản nhằm giúp cho các bạn biết cách sử dụng vòng lặp (for, while)
ví dụ:
n=0 --> thì trả về 1
n=1 --> thì trả về 1
n=2 --> thì trả về 2
n=5 --> thì trả về 1 x 2 x 3 x 4 x 5
6 x 20 = 120
n! = 1 x 2 x 3 x 4 x 5 x ... x (n-1) x n
--> n! = 2 x 3 x 4 x 5 x ... x (n-1) x n (tại vì nhân với 1 thì cũng như không nhân với gì hết)
Mình sẽ giải bằng 2 cách
cách 1: sử dụng vòng lặp
cách 2: sử dụng đệ quy
Mời các bạn xem video:
Code: để hiểu rõ tại sao code như vậy, các bạn nên xem video vì mình đã làm code tối ưu từng bước
#include <stdio.h>
int gt1(int n){
int s = 1;
for(int i=2;i<=n;s*=i++){}
return s;
}
int gt2(int n){
return (n==0)? 1 : n * gt2(n-1);
}
int main(){
int n;
printf("nhap n = ");
scanf("%d",&n);
printf("\nCach 1: %d! = %d",n,gt1(n));
printf("\nCach 2: %d! = %d",n,gt2(n));
return 0;
}