30/09/2018, 16:19
Hỏi bài tập (x/1!) +...+(x^n)/n!
Đâ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("
x = ");
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;
}
Bài liên quan
Do em khai báo float x, n; nhưng lại truyền %d khi nhập.
Ngoài ra có vài lời khuyên cho bài này
Mới nghĩ ra,bạn kiểm tra thử xem có lỗi gì không?
Hì, nó cũng gần giống thuật toán cũ 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é.
float(t) với float(giai_thua)
là sao anhÉp kiểu 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
ép kiểu là (kiểu cần ép) biến
VD: (float) a