c语言的return
这是一个解决八皇后问题的代码,里面有一个return我看不懂,不知道那个return原理是什么,先上代码吧#include<stdio.h>
#include<stdlib.h>
int queens = {0}, count = 0;
int check(int line, int list)
{
for(int i = 0; i < line; i++)
{
if(queens == list)
{
return 0;
}
if((line + list) == (i + queens))
{
return 0;
}
if((line - list) == (i - queens))
{
return 0;
}
}
return 1;
}
void PrintEightQueen()
{
for (int line = 0; line < 8; line++)
{
int list;
for (list = 0; list < queens; list++)
printf("0");
printf("1");
for (list = queens + 1; list < 8; list++){
printf("0");
}
printf("\n");
}
printf("================\n");
}
void EightQueenSurvive(int line)
{
for(int list = 0; list < 8; list++)
{
if(check(line, list))
{
queens = list;
if(line == 7)
{
count++;
PrintEightQueen();
queens = 0;
return;
}
EightQueenSurvive(line + 1);
queens = 0;
}
}
}
int main()
{
EightQueenSurvive(0);
printf("it has %d methods",count);
system("pause");
return 0;
}
if(line == 7)
{
count++;
PrintEightQueen();
queens = 0;
return;
}
这里面这个return是干嘛的,如果去掉的话count的输出值就是1,加上return的话count的值是92,也就是正确的答案,为什么去掉return后count的值只加了一次1呢? 这里的 return 作用是直接退出函数 zltzlt 发表于 2020-8-17 18:08
这里的 return 作用是直接退出函数
退出EightQueenSurvive吗? 小甲鱼的铁粉 发表于 2020-8-17 18:17
退出EightQueenSurvive吗?
是的 zltzlt 发表于 2020-8-17 18:08
这里的 return 作用是直接退出函数
那为什么没有return的话count的值加不上呢? EightQueenSurvive 这个函数是一个递归函数
if(line == 7)
{
count++;
PrintEightQueen();
queens = 0;
return;
}
里面的return就是递归在line == 7的时候退出递归
count是个全局函数如果没有return 应该是一个死循环吧
页:
[1]