Đây là bài em dang làm, khi run nó luôn luôn xuất ra F = 0. Em đã thử debug thì thấy nó bỏ qua vòng lập while của em luôn. Mọi người giúp em sửa với.
//F = x/1! + (x^2)/2! + ... + (x^n)/n!
//n! = n(n-1)(n-2)...4.3.2.1;
float Factorial( float n)
{
float s = 1;
if(n == 0)
return 1;
for(int f = 1; f <= n; f++){
s *= f;
}
return s;
}
int main()
{
// Declaration
float i = 1, j = 1, x, n, a = 0, b = 0, g = 0, F = 0;
// Input
printf("Input x and n");
// Input x
printf("\nx = ");
scanf("%d", &x);
// Input n
printf("n = ");
scanf("%d", &n);
while(i <= n){
a = pow(x, i);
b = Factorial(i);
g = a/b;
F += g;
i++;
j++;
}
//F = x/1! + (x^2)/2! + ... + (x^n)/n!
// Output
printf("F = %f", F);
return 0;
}

Vẫn sử dụng hàm giai_thua() và hàm pow(). Không sử dụng lại được kết quả trước đó. Mỗi lần lặp lại chạy 2 vòng lặp mới - 1 của giai_thua() và 1 của pow() rất tốn kinh phí.
Tham khảo code bên dưới xem có gì không hiểu không nhé.
2 thằng đó là kiểu int nhưng trong phép chia đó anh muốn nó là kiểu float nên viết vậy
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?