Gặp lỗi trong bài tập Đệ Quy?

Em có làm 1 bài tập trong C về Recursion như sau:

Dưới đây là phần code làm bài của mình nhưng không hiểu sao khi chạy, nhập cái gì thì đáp án nó cũng cho ra là 0 :slight_smile:

int TinhTong(int m)
{
	if (m == 1)
		return 1;
	return m + TinhTong(m - 1);
}
float TinhTongPhanSo(int n)
{
	if (n == 1)
		return 1;
	return (float)1/TinhTong(n) + TinhTongPhanSo(n - 1);
}
int main()
{
	int n;
	printf("Nhap vao so: ");
	while ((scanf("%d", &n)) != EOF)
	{
		printf("\nKetqua: %.3f\n", TinhTong(n));
		printf("\nNhap vao so: ");
	}
	getch();
	return 0;
}

Mọi người giúp mình nhé. Xin cảm ơn !

Cái hàm tính tổng phân số sao không thấy gọi ???

1 Like

Chỗ này trả về kiểu int sao lại dùng định dạng %f


Định dạng in ra sai so với kiểu dữ liệu nên giá trị in ra sẽ bị sai.

1 Like

Không phải :smiley: Cái đó mình gọi nhầm hàm TinhTongPhanSo(n) thành TinhTong(n)
Đáng lẽ thế này mới đúng: printf("\nKetqua: %.3f\n", TinhTongPhanSo(n));

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