c语言函数的递归调用

C语言的函数嵌套调用与函数递归调用有什么区别~

区别:
函数的嵌套调用是指在一个C语言函数里面在执行另一个函数,这样通常称为函数的嵌套调用。而函数的递归调用,一般指的是这个C语言函数调用自己本身的函数也就是说调用函数的函数体是一样的,这样称为递归调用。

扩展资料:
函数的分类
从用户使用的角度看,函数有两种:
标准函数,即库函数。这是由系统提供的。用户自定义的函数。可以解决用户的专门需要。
从函数的形式看,函数分两类:
无参函数。printstar和print_message就是无参函数。在调用无参函数时,主调函数并不将数据传送给被调用函数,一般用来执行指定的一组操作。
有参函数。在调用函数时,在主调函数和被调用函数之间有数据传递。也就是说,主调函数可以将数据传递给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。
参考资料来源:百度百科—main函数

递归有一个堆栈的概念,那就意味着他是一个反理解的过程:就象数学递推一样,你知道第一项,第二项,又知道通项公式,那你就可以知道任何一项。
然后你看代码:fun(0)==0,fun(1)==1;是告诉你一二项。
fun(n)==fun(n-1)+fun(n-2);是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么操作的,那很复杂的,也不需要明白!!!!

这段程序的意思是对传来的参数n,如果n<1,程序会崩溃;如果n>1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)

比如说做了5次递归,即n=5;执行的操作如下:

第1次调用(n=5) ,定义了一个intc;

       第2次调用(n=4) ,定义了一个intc;

            第3次调用(n=3) ,定义了一个intc;

                 第4次调用(n=2) ,定义了一个intc;

                       低5次调用(n=1) ,定义了一个intc;

                       n=1时,满足了条件n==1,故此时c=10;

                       第5次返回,此时第5次定义的c=age(int n)=10;前4次定义的int c没有值,下同

                第4次返回 ,此时第4次定义的c=age(int n)+2=10+2=12

            第3次返回,此时第3次定义的c=age(int n)+2=12+2=14

     第2次返回,此时第2次定义的c=age(int n)+2=14+2=16

第一次返回,此时第一次定义的c=age(int n)+2=16+2=18。此时按下面的程序b接收了返回值

我觉得你应该注意的是age(int n)本身就代表一个int值,就算没有参数接收也可以参与到运算当中,就像这个例子一样。

程序:

#include<stdio.h>

int age(int n)

{int c;

 if(n==1)

  c=10;

 else

c=age(n-1)+2;

 return c;

}            

void main()

{

int a=0,b=0;

scanf("%d",&a);

b=age(a);

printf("result is %d
",b);

}



这个是用户自定义的函数,等待别的函数调用啊,你哪儿不明白?

没太明白。这个要看在什么地方初次调用这个函数啊。比如
int main()
{
int i=age(3);
...

请问下c语言中函数的嵌套和递归怎么区别
答:在C/C++中,函数可以递归调用,也可以嵌套调用。递归调用是指自己调用自己,而嵌套调用是指两个或多个函数间相交叉互调用。递归调用时,函数自身必须更改返回(结束)条件,否则就会进入死循环,而嵌套调用就没有这样的要求,与普通函数一样,完成指定操作后正常返回即可。

关于C语言main函数的调用
答:在C语言中,main函数可被递归调用 在C++标准中,main函数不可以被递归调用 但是许多C++编译器对标准作出了扩展,使得main函数可以被递归调用。可以用Visual C++做个实验 1)用/Tc编译器选项(使用C编译器),main可以递归调用 2)用/Tp(编译C++)和/Ze(启用语言扩展),main可以递归调用 3)用/Tp(...

C语言函数的递归调用
答:先调用函数f,然后把返回值赋值给z。不过这个函数不对,没有退出条件,无法停止。举例说明吧 int f(int x){ if(x==0){ return 1;} else { return x*f(x-1);} } 假如f(3)那么 第一次f(3):x!=0,调用f(2)第二次f(2):x!=0,调用f(1)第三次f(1):x!=0,调用f(0...

c语言怎么用递归调用函数的方法求n的阶乘?
答:1、打开VC6.0软件,新建一个C语言的项目:2、接下来编写主程序,首先定义用来求阶乘的递归函数以及主函数。在main函数里定义变量sum求和,调用递归函数fact(),并将返回值赋予sum,最后使用printf打印sum的结果,主程序就编写完了:3、最后运行程序,观察输出的结果。以上就是C语言使用递归求阶乘的写法:...

C语言规定,除主函数外,程序中各函数之间
答:你这个应该是选择题,答案是程序中各函数之间既允许直接递归调用也允许间接递归调用

...是关于函数的嵌套调用和递归调用的(要每一步都详细解说一下,非常...
答:◆ C语言不能嵌套定义函数。例如:在下列调用f1函数中调用f2函数。float f1(int a, int b){ …f2(a+b,a-b);…} int f2(int x, int y){ …} 调用过程如图7.2所示。【例7.10】求1k+2k+3k+…+nk的值,假设k为4,n为6。include "stdio.h"void main( ){ int sum, n=6, k=...

C语言函数递归调用问题
答:而THREE变成过度柱了,HANOI函数参数的变化正体现了这一点.当运行到这里时,第3个盘子已经从ONE移动到了 THREE(这只是分析,真实情况是只有当递归完成时才做到这一步).这个时候原先移动3个盘子的问题变成移动两个盘子的问题,所以再调用HANOI时盘子的数量为N-1.直到N==1时,调用结束.递归还是不用好 ...

c语言的函数递归调用是怎么执行步骤的?
答:这是数组a[10]dis(a[i]);//初始为啊0,就是a[0],然后在函数内部调用dis(a[i+1]),就是a[1],然后递增到数组结束 dis(a[i]) //i=0; dis(a[i]+1)//i=0+1 dis(a[i]+1)//i=1,i+1=1+1=2...

[C语言]此程序return f(n-1)+n什么意思?
答:return f(n-1)+n;中的f(n-1)是对函数f的递归调用。而函数f的功能是求1加到n的累加和,因此,f(4)=1+2+3+4=10,输出是10。

c语言中,什么是函数的递归,能举个例子么
答:所以可以写个函数 int fun(int n) // 这里的n代表第几个数 { if(1 == n || 2 == n) // 第一个数 { return 1;} else { return fun(n - 1) + fun(n - 2); // 这里就是自己调用自己,形成循环自我调用。} } 注: 以上代码只是用来演示递归,不包含错误校验。在实际生产...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网