http://hi.baidu.com/pope123/item/9d473e7f3ea341376f29f674
这篇文章用汇编告诉了我返回值有可能是true也可能是false,但我看不懂,以后攻。 我为什么会接触到这个问题,请看实际例子:
原来我漏写了代码中有颜色的两条语句,发现程序运行结果出乎我的意料。 我原来以为不写就是默认返回false。其实 bool work()原来是void work()
bool work(int x,int y,int z)
{
int i;
if (y==9)
x++,y=0;
if (x==9)
{
ans=z;
return(true);
}
if (table_for_solve[x][y])
{
if(work(x,y+1,z+table_for_solve[x][y]*h[x][y]))
return(true);
else return(false);
}
else
{
for (i=1;i<=ss;i++)
if (!b[x][i]&&!c[y][i]&&!d[x/s*s+y/s][i])
{
table_for_solve[x][y]=i;
make(x,y,i,1);
if(work(x,y+1,z+i*h[x][y]))
return(true);
make(x,y,i,0);
}
table_for_solve[x][y]=0;
return(false);
}
}
本文通过一个具体的编程实例,探讨了在程序设计中对于函数返回值的理解误区,并详细解释了一个涉及递归调用的布尔类型函数的具体实现细节。
1615

被折叠的 条评论
为什么被折叠?



