30/09/2018, 21:10

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

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("
Ketqua: %.3f
", TinhTong(n));
		printf("
Nhap vao so: ");
	}
	getch();
	return 0;
}

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

Bùi Trung Thông viết 23:22 ngày 30/09/2018

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

Ngô Doãn Tuấn viết 23:15 ngày 30/09/2018

printf("\nKetqua: %.3f\n", TinhTong(n));

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.

Người bí ẩn viết 23:18 ngày 30/09/2018

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

Không phải 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));

Bài liên quan
0