网站建设资讯

NEWS

网站建设资讯

c语言递归函数的返回值 c语言递归函数的返回值返回到哪

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语言中函数的返回值到底是什么意思,有什么用

一个函数的函数名既是该函数的代表,也是一个变量。由于函数名变量通常用来把函数的处理结果数据返回给调用函数,即递归调用,所以一般把函数名变量称为返回值,函数的返回值类型是在定义函数时指定的。

函数可以有返回值,也可以没有返回值。

1、没有返回值的函数:功能只是完成一个操作,应将返回值类型定义为void,函数体内可没有return语句。

2、有返回值的函数:函数的最后会有一个返回值return,可以用来获取该函数执行结果返回给该函数,让外部调用该函数的。

一个函数的函数名既是该函数的代表,也是一个变量。由于函数名变量通常用来把函数的处理结果数据返回给调用函数,即递归调用,所以一般把函数名变量称为返回值,函数的返回值类型是在定义函数时指定的。

扩展资料

C程序中的print函数:

是这样写的:printf("%d\n",printf("%d",printf("%d",i)));

一共有三个printf函数,我们可以使用一些代号来简化这个printf函数,如下:

代号A: printf("%d",printf("%d",i));

代号B: printf("%d",i)

则C程序代码可以简化为:printf("%d\n",A); 那么我们就先来求A。而A,又可以简化为:printf("%d",B);那么就先来求B。

B是 printf("%d",i),打印出“123”,即在C语言运行结果中,你最先看到的是123。C语言printf函数的返回值是printf实际控制输出的字符数,那么打印的123 就是3个字符,因此printf("%d",i)返回的就是3,也就是B是3。

那么,A就可以写为printf("%d",printf("%d",3));打印出3,即在运行结果中,你紧接着会看到3。

而打印出的3是1个字符,因此A就是1,那么printf("%d\n",A); 实际上就是printf("%d\n",1); 打印出1。

参考资料来源:百度百科-返回值

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

return

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

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

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

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

(1)

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

(2)

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

类型就行了

(3)

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

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

菜鸟求助---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语言递归函数的返回值 c语言递归函数的返回值返回到哪
链接地址:http://cdweb.net/article/ddeigjj.html