에 루프 변환 C와 내가해야 :는 while 루프와 재귀
는 "8 개의 여왕 체스 문제에 대한 모든 솔루션을 인쇄의 수를 반환하는 재귀 함수를 작성 솔루션 및 함수 프로토 타입이 있어야합니다 : INT 기능 (무효)
가 내가 정적 변수로 사용하는 인수 규칙 해결하려면
.나는 (구글 도움으로) 해냈다. 작동하지만, 그들은 for
루프를 사용할 수 없다. 그리고 마지막 두 개의 for
루프를 while
루프로 변환 할 수 없다.
그것은 나를 미치게합니다, 그것은 쉬워야합니다! 나는 여기에
가 작업 기능입니다 ... 그것은 그 혼란 그것을 재귀 생각 :int function()
{
static int count = 0;
static int col = 0;
const int n = 8;
static int hist[8] = {10, 10, 10, 10, 10, 10, 10, 10};
int i1 = 0;
if (col == n) {
count++;
while (i1++ < n)
{
putchar('0' + hist[i1-1] + 1);
}
putchar('\n');
}
for (int i = 0; i < n; i++) {
int j = 0;
for (j = 0; j < col && !(hist[j] == i || (hist[j] - i) == col - j || -(hist[j] - i) == col - j); j++);
if (j < col) {
continue;
}
hist[col] = i;
col++;
function();
col--;
}
return count;
}
그리고이 같은 while
루프에 마지막 두 for
루프를 변환하려고 :
int i = 0;
while (i < n)
{
int j = 0;
while (j < col && !(hist[j] == i || (hist[j] - i) == col - j || -(hist[j] - i) == col - j))
{
j++;
}
if (j < col) {
continue;
}
hist[col] = i;
col++;
function();
col--;
i++;
}
하지만 작동하지 않습니다, 보이는 것보다 더 for 루프가 있습니까? 재귀가 처음인데 생각했지만 잘못 생각한 것 같습니다 ...
'for'에서 'while'변환 부분이 나에게 맞는 것 같습니다. 그게 당신이 바꾼 유일한 것입니까? – Mahesh
예, 처음 시도해도되지만 두 번째 시도는 시도 할 수 없습니다./ – ItsASecret
그래서 나머지 마지막 'for' 루프 만 변경했습니다. 나는 당신이 반환 진술을 지키기를 바랍니다. – Mahesh