从品牌网站建设到网络营销策划,从策略到执行的一站式服务
当n==1时就返回了, 虽然没有显式地写return
创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元白云做网站,已为上家服务,为白云各地企业和个人服务,联系电话:13518219792
if(n==1) 成立时执行printf语句, 执行完后遇到move函数的右 } 就返回了.
...
从汇编的角度来说,函数
返回值
,其实就是函数返回后,cpu中eax的值。在C语言等语方中,在函数中写了返回语句,那么函数在返回时,就会对eax作最后赋值。
int
find(int
a,int
b)
{
if(b=0)
return
100;
else
find(--a,--b);/这里为什么不用返回值?/
}
//为什么不用返回值呢,因为此程序进行递归后,在最初返回时,eax的值被赋值为100,而之后的回溯过程中,程序并没有修改eax的值,所以到最后,返回值还是100。
这种写法是会出问题的。应写成。
int
find(int
a,int
b)
{
if(b=0)
return
100;
else
return
find(--a,--b);
}
为什么了修改之后就出错呢,如以上所说,这很好理解,因为程序最后调用了printf()。eax中的值是printf()的返回值。若把他当成find()的返回值自然是出错了。
递归的三个条件就是:
1,存在递归调用
2,有退出条件
3,有return值。
这是因为递归调用按照栈的方式,在没有达到退出条件的时候后面的函数也就无法执行return语句,这样就实现了每一层的return语句与这层函数相对应。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图