Tính giai thừa không ra, nhờ ae chỉ giúp

Code của mình đây:

float GiaiThua(int n)
{
	int GT = 1;
	for (int i = 1; i <= n; i--)
	{
		GT = (GT * i);
		cout << GT;
	}
	return (float)GT;
}

phiên bản 2:
float GiaiThua(int n)
{
	float GT = 1;
	for (int i = 1; i <= n; i--)
	{
		GT = (GT *(float) i);
		cout << GT;
	}
	return (float)GT;
}

-> kq ra vòng vĩnh cửu toàn số 0.
Mình là lính mới ae chỉ giáo

for (int i = 1; i <= n; i++)

Cơ bản thì code ở trên bạn đang cho ra kết quả của phép tính 1 * 0

Vòng for i <= n và i-- thì vô hạn là đúng rồi bạn. i++ nhé bạn

Và mỗi lần in ra GT * i làm gì ? Chạy xong vòng for mới in hoặc return thì tuỳ bạn

Haha, cảm ơn mn. Tự dưng thấy mình ngu lạ :grin:

Mình in ra để xem lỗi ở chỗ nào thôi bạn

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