VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 641|回复: 1

[求助] c语言函数递归使用 求帮助!初学c语言,求帮助!

[复制链接]
99_avatar_middle
在线会员 发表于 2016-12-24 12:49:57 | 显示全部楼层 |阅读模式
5驿站币
当perm(list, 0, 6);时,程序进入perm函数 应当进入else 但是在else中还有一个perm函数  经过多次循环达到k>m的条件,然后进入循环体, 就是不清楚else{for(i = k; i <= m; i++)在什么时候才能进行 对这个递归很乱 不知道怎么进行 因为课程设计 实在看不懂了才来请教!希望给解答!
源程序:
#include <stdio.h>
int n = 0;
int rest[7][7];
void swap(int *a, int *b)
{
        int m;
        m = *a;
        *a = *b;
        *b = m;
}
void perm(int list[], int k, int m)
{
        int i;
int j;
if(k > m)
{
        for (i=0; i<7; i++)
{
        for (j=0; j<7; j++)
{
        if (rest[i][j] == 0)
return;
if (rest[i][j] != list[i])
continue;
if (rest[i][j] == list[i])
break;
        }
        }
n++;
printf("Solution: %d\n", n);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("=============================================================\n");
for(i = 0; i <= m; i++)
{
        switch (list[i])
{
case 1: printf("星期一");
break;
case 2: printf("星期二 ");
break;
case 3: printf("星期三 ");
break;
case 4: printf("星期四 ");
break;
case 5: printf("星期五 ");
break;
case 6: printf("星期六 ");
break;
case 7: printf("星期日 ");
break;
default:break;
}
}
printf("\n\n\n");}
else{for(i = k; i <= m; i++)
{
        swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
        printf("\n");
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
char ss [7][20]={"赵"," 钱","孙"," 李"," 周"," 吴"," 陈"};
printf("==========================欢迎使用排班系统=======================\n");
printf("请输入下列人选择休息的可能时间:\n");
for(i = 0; i < 7; i++)
{
        printf("%s", ss[i]);
for(j = 0; j < 7; j++)
{
        scanf("%d", &rest[i][j]);
if(rest[i][j] == 0)break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
getchar();
getchar();
printf("输出完毕,按回车键结束!\n");
return 0;
}





上一篇:我想取一个值,怎么写进这个数组里,老是报错
下一篇:vs2010已建立的对话框和已建立该对话框的类失去关联
99_avatar_middle
ico_lz  楼主| 发表于 2016-12-24 12:52:59 | 显示全部楼层
课程设计 排班系统 看不懂程序代码perm递归
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-26 23:30

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表