| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 363 人关注过本帖
标题:这个程序为什么会重复输出64次?怎样变成一次?递归语句中哪里的循环出错了 ...
只看楼主 加入收藏
a95674641
Rank: 1
来 自:福建福州
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-21
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
这个程序为什么会重复输出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;
    }
}
2011-06-21 16:47
h18784995343
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2011-5-13
收藏
得分:5 
楼主要检查什么
2011-06-21 17:06
lzy013903
Rank: 1
等 级:新手上路
帖 子:23
专家分:7
注 册:2011-5-21
收藏
得分:5 
printf嵌套在两个for语句里面··i乘以j等于64···所以输出64次
不知道你要输出什么···所以不知道该改什么···
2011-06-21 21:22
快速回复:这个程序为什么会重复输出64次?怎样变成一次?递归语句中哪里的循环出 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038787 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved