Code hiển thị các ước của một số nguyên dương dùng đệ quy bị lỗi

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.

Chuyển đoạn

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

thành

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

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

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);
}
1 Like

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

Chuẩn rồi đấy …:grin:

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

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