c语言递归函数有返回吗 c语言中递归函数

c语言递归函数没有return怎样返回呢?

当n==1时就返回了, 虽然没有显式地写return

创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元白云做网站,已为上家服务,为白云各地企业和个人服务,联系电话:13518219792

if(n==1) 成立时执行printf语句, 执行完后遇到move函数的右 } 就返回了.

菜鸟求助---C语言递归函数返回值

...

从汇编的角度来说,函数

返回值

,其实就是函数返回后,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()的返回值自然是出错了。

c语言递归函数一定要有return吗?为什么?

递归的三个条件就是:

1,存在递归调用

2,有退出条件

3,有return值。

这是因为递归调用按照栈的方式,在没有达到退出条件的时候后面的函数也就无法执行return语句,这样就实现了每一层的return语句与这层函数相对应。


当前名称:c语言递归函数有返回吗 c语言中递归函数
网页链接:http://scyanting.com/article/ddposih.html