30/09/2018, 20:56
Chương trình bị treo khi tính tổng S = 1+1/2! + ... 1/n!
Mọi người cho e hỏi ạ? tính tổng s=1+1/2!+…+1/n! trong đó yêu cầu tính tổng 2016 là bao nhiêu , em làm cách này thì ra lỗi ạ (treo máy) , anh chị có cách nào khác để làm bài này được không ạ?
#include <stdio.h>
#include <conio.h>
int GT(int n)
{
if (n == 1 || n == 0)
return 1;
else
return n*GT(n - 1);
}
void main()
{
int i;
float s = 0;
for (i = 0; i <= 2016; i++)
s += 1.0 / GT(i);
printf("
s= %f", s);
_getch();
}
Bài liên quan
Python: Tìm giá trị của biểu thức Taylor.
taylor, maclaurin, loop, khai triển, xấp xỉ
Đệ quy hở ? 2016 hở ?
Dự là tràn stack @@.
Dùng cách khác không dùng đệ quy. Dùng vòng lặp chẳng hạn.
Nếu bài này giải thích cách đệ quy thì bạn nên tạo thêm 1 hàm tính Giai thừa nữa. Tất cả phép toán thì hoàn thành trong hàm con luôn. Khi qua hàm main chỉ việc gọi tới hàm con thôi. Mà do phép Giai thừa có giới hạn nên khi quá nhiều sẽ bị tràn, không làm được. Bạn làm bài này được là ok rồi, không cần phải tính 2016 2017 … đâu
Tham khảo code của mình nhé! Do hơi bận xíu nên mình code nhanh, nên không đọc lại. Bạn xem chỗ nào sai thì sửa, không thì tham khảo cho biết
Bĩnh tĩnh phân tích nào 2016! thì kiểu dữ liệu nào chịu cho nổi
Số lớn quá không thể dùng biến để chứa giai thừa của nó được. Bạn phải tạo mảng, dùng các phần tử mảng để chứa các chữ số từ kết quả giai thừa sau đó ghép lại.