30/09/2018, 23:11

Nhờ giúp đỡ bài toán viết hàm hiển thị các ước của một số nguyên dương dùng đệ quy.Cảm ơn

void XuatUS(int n, int i = 1)
{
	if (n == 1)										
		cout << n ;
	if ( n % i == 0)
	{	
		cout << i;
		XuatUS(n,i+1);
	}
	else
		XuatUS(n,i+1);
}

Nhờ xem giúp mình đọan code, chương trình chạy lỗi.

Quân viết 01:25 ngày 01/10/2018

Chuyển đoạn

if (n == 1)										
		cout << n ;

thành

if (n == 1 || n == i)										
		cout << n ;
Nguyễn Thiên Nhã viết 01:13 ngày 01/10/2018

vẫn lỗi.nếu sửa như vậy khi chạy xuất giá trị cuối cùng 2 lần.lỗi này: :warning C4717: ‘XuatUS’ : recursive on all control paths, function will cause runtime stack overflow

Khánh Nguyễn viết 01:12 ngày 01/10/2018

Bạn tham khảo cái này:

void XuatUS(int n, int i = 1)
{
	if (i == n)
	{
		cout << n << endl;
		return;
	}
	if (n % i == 0)
	{
		cout << i << endl;
	}

	XuatUS(n, i + 1);
}
Quân viết 01:24 ngày 01/10/2018

Thêm đoạn này If ( n == i ) return; vào sau if( n== 1) cout << i << endln;

Quân viết 01:26 ngày 01/10/2018

Chuẩn rồi đấy …

Nguyễn Thiên Nhã viết 01:12 ngày 01/10/2018

Rồi ,Cám ơn 2 bạn

Bài liên quan
0