Bài toán giai thừa với hàm

image
với x và n được nhập từ phím
code em viết nó không chịu xuất kết quả, dù có nhập gì đi nữa. Mong mọi người giúp đỡ ạ!

#include <math.h>
using namespace std;
void baitoan3 (int n, int x)
{
	double s;
	int gt = 1, dau =-1;
    s=x;
	for (int i=3; i<=n;i+2)
	{
		gt=gt*(i-1)*i;
		s=s+dau*pow(x,i)/gt;
		dau=-dau;
	}
	cout<<s;
}

int main()
{
	double n,x;
	cout<<"nhap n,x"<<endl;
	cin>>n>>x;
	baitoan3 (n,x);
	return 0;
	
}

Bạn thử in ra i xem có gì thay đổi không.

3 Likes


như vậy hả?

Ừ vậy đó :smiley: giờ sửa lại chỗ for thôi.

4 Likes

cái hình chỉ là ví dụ xem i có thay đổi không thôi í!

Sao cái hình lại có thêm i = i + 1 nữa vậy?

3 Likes

cái đó anh ở trên bảo test vòng for đó có chạy hay không ấy ạ. Và test xong thì nó vãn chạy bth

Mình chỉ nói bạn in ra i chứ không nói có gán i trong for.

2 Likes

Ý của @noname00 là thế này đây:

for (int i=3; i<=n;i+2)
	{
		gt=gt*(i-1)*i;
		s=s+dau*pow(x,i)/gt;
		dau=-dau;
		cout<<i<<" "; // chỉ thế này thôi.
	}
3 Likes

tất cả đều bằng 3

Đấy, bạn lặp kiểu gì mà nó không ra 3, 5, 7... mà cứ “nằm” ở số 3 hoài vậy? Lặp vô hạn nhé!

3 Likes

Mình cũng chẳng biết nữa, thay i+2 thành i++ thì nó chạy, nhưng sai logic của bài toán :((

Chắc bạn chưa hiểu rồi. i+2 chỉ tính (cộng) mà chưa gán về cho i.

Thay i+2 thành i = i+2 thì ra gì nào?
Ngoài ra còn toán tử += (cộng và gán). i+=2.

3 Likes

nghĩa là giờ mình sẽ sửa lại như vầy for (int i=3; i<=n;i+=2) đúng không nhỉ @@

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