这个程序为什么会重复输出64次?怎样变成一次?递归语句中哪里的循环出错了?求解!
#include <stdio.h>int s[8];
int check(int n)
{
int i;
for(i=1;i<=n-1;i++)
{
if (s[i]==s[n]||s[n]-s[i]==(i-n)||s[n]-s[i]==(n-i))
{
return 0;
}
}
return 1;
}
void b(int n)
{
int i,j;
if (n<=8)
{
for (i=1;i<=8;i++)
{
s[n]=i;
if (check(n)==1)
{
if(n==8)
{
for(j=1;j<=8;j++)
{
printf("%d",s[j]);
}
printf("\n");
}else
b(n+1);
b(n+1);
}
}
}
}
void main()
{
int d;
loop:
scanf("%d",&d);
if (d==8)
{
b(1);
}
else
{
goto loop;
}
}