Viết chương trình tính e = 1 + x/1! - x^2/2! +...+(-1)^n+1*(x^n/n!), với n là số nguyên dương, x là số thực

Mọi người giải thích hộ mình bài này với!!!
Viết chương trình tính e = 1 + x/1! - x^2/2! +…+(-1)^n+1*(x^n/n!) , với n là số nguyên dương, x là số thực được nhập từ bàn phím
Đây là code của mình không biết edit như thế nào cho đúng?

int main() {
	int n, s;
	float x, e;
	long i;
	cout << "Nhap vao so nguyen n = ";
	cin >> n;
	cout << "Nhap vao so thuc x = ";
	cin >> x;
	s = 0;
	for( i = 1; i <= x; i++)
		s = s + s*i;
		e = pow(-1,i)*(pow(x,n)/s);
	cout << "E = "<< e << endl;
}

Bạn tự nhẩm bằng tay trước đi.

Tại i =1;
 s= s + s*i = 0;
 e = pow(-1,i) * (pow(x,n)/s); // Chia cho 0??

Cách giải của bạn sai rồi.
Cách giải những dạng bài này bạn nhìn vào số đầu và số cuối. Số cuối là công thức. Số đầu là điểm xuất phát cho thuật toán. Tìm hiểu vòng for trước đã nhé

1 Like

Nhầm s = 1, phải sữa sao vậy bạn?

i=1 s=1+x
i=2 s=1+x+x*x/2
i=3 s=1+x+…

1 Like
#include <iostream>
#include<math.h>

using namespace std;


float GiaiThua(int n)
{
    if(n==1)
        return 1;
    return GiaiThua(n-1)*n;
}

float Tinh(int x, int n)
{
    if(n == 1)
        return 1;
    return Tinh(x,n-1) + pow((-1),n)*((pow(x,n)/GiaiThua(n)));
}

int main()
{
    //1.2.3
    cout << "Hello world!" << endl;
    cout<<" "<<Tinh(1,2);
    return 0;

}

Code đệ quy …ngắn gọn… :smile:

không hiểu có thể reply mình giải thích nha^^

float Tinh(int x, int n)
{
    if(n == 1)
        return 1;
    return Tinh(x,n-1) + pow((-1),n)*((pow(x,n)/GiaiThua(n)));
}

Mình không hiểu phần này lắm cái:
return Tinh(x,n-1)
Phần tính giai thừa này hình như sai?

float GiaiThua(int n)
 {
if(n==1)
    return 1;
return GiaiThua(n-1)*n;
 }

Ở đây đệ quy thực chất nó cũng như một vòng lặp vậy
ở đây ta có :

float Tinh(int x, int n)

với x : là một số nguyên do người dùng nhập vào…bạn để ý…cái số x lúc gọi lại hàm thì nó k đổi…
nên Tinh(x,n-1) thâm số vẫn giữ nguyên

(n-1) :

bạn để ý là n mỗi lần lặp nó giảm đi 1 đến lúc n == 1 thì nó dừng lại

float GiaiThua(int n)
 {
if(n==1)
    return 1;
return GiaiThua(n-1)*n;
 }

Công thức tính giai thừa là gì :
ví dụ 5! = 5*4*3*2*1 = ?

<=> n! = n*(n-1)*(n-2)*(n-3)....*1

mỗi lần như z thì n nó sẽ giảm đi 1…tới lúc n == 1thì dừng .

À mình hiểu rồi, cám ơn bạn rất rất nhiều đã giải thích tường tận như vậy, thanks bạn nha!!! :grin:

Mình sợ viết ra như vậy sợ không hiểu hết…tại không có khiếu giải thích lắm…nếu mà nói thì bạn sẽ hiểu hơn :slight_smile:

:grinning: :grinning: Cám ơn bạn!!!

b ơi có phần vẽ sơ doof khối bài này k b để mình tham khảo ạ

Bước đầu tiên là tìm dạng chung của số hạng, tiếp theo là tìm ct truy hồi :smiley:
Cuối cùng là “gọt lại” hay chọn điểm khởi đầu.

Dạng này có 3 bước.

2 Likes

mình mới học nên k hiêu lắm vế sơ doof khối b có phần vẽ cho minh tham khảo ko ạ

(i%2==0?1: -1); phần này là như thế nào thế bác

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?