Tính n giai thừa bằng đệ quy và vòng lặp

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;
}

Bài liên quan

Bài liên quan