c语言递归函数快速当返回 c语言递归语句

C语言中 递归函数 的return 返回值问题

return

创新互联建站专注于企业成都营销网站建设、网站重做改版、曲松网站定制设计、自适应品牌网站建设、H5高端网站建设商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为曲松等各大城市提供网站开发制作服务。

表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。

return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

return语句后面具体是什么内容,这就要具体情况具体分析了:

(1)

在返回类型是char的函数中,return后应该是char类型的值;

(2)

在返回类型是int的函数中,如果是要停止函数的调用,最好应该为0;其他的按照你的目的而定,只要是int

类型就行了

(3)

在返回类型是结构类型的函数中,return后应该是结构的一个实例对象。

总之,函数定义为什么样的返回类型,该函数中return后就应该是相应类型的值。

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

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

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语言函数的返回值(递归)

int hehe(int n) {

if(n=1) return 1;

return n * hehe(n-1);

}

我们一点一点来看:

首先 n = 0 传入,if条件满足 返回 hehe(0) = 1

在传入 n = 1, if条件还是满足 返回 hehe(1) = 1

我们传入参数 n = 2, if 条件不满足 hehe(2) = 2 * hehe( 2 - 1 )= 2 * 1

在我们传入 n =3 , if条件不满足 hehe(3) = 3 * hehe(2) == 3 * 2 * 1

你继续这个步骤 ,对任何正整数n

hehe(n) = n * hehe(n-1) = n * (n-1) * ......* 1

明白了吗?!


分享文章:c语言递归函数快速当返回 c语言递归语句
标题链接:http://pwwzsj.com/article/hjcpdd.html