c语言中的归函数,c语言定义递归函数

c语言递归函数

首先要理解递归的概念,先递后归

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站制作、济南网络推广、小程序开发、济南网络营销、济南企业策划、济南品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供济南建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

开始递

get(1) n=1不成立,执行else

get(2) n=2不成立,执行else

get(3) n=3不成立,执行else

get(4) n=4不成立,执行else

get(5) n=5不成立,执行else

get(6) n=6不成立, 执行else

get(7) n=7不成立, 执行else

get(8) n=8不成立, 执行else

get(9) n=9不成立 执行else

get(10) n=10成立,返回值1

开始归!

get(10) num=1

get(9) get(n+1)*2+2 = 1*2+2=4 //这里说下为什么不在递的时候计算else呢?因为在递的时候我们并不知道他们上一次的值,所以是没办法计算的,这里get(n+1)已经知道了上一次的值get(10)是1。

get(8) get(n+1)*2+2 = 4*2+2 =10

get(7) get(n+1)*2+2 = 10*2+2 = 22

get(6) get(n+1)*2+2 = 22*2+2 = 46

get(5) get(n+1)*2+2 = 46*2+2 = 94

get(4) get(n+1)*2+2 = 94*2+2 = 190

get(3) get(n+1)*2+2 = 190*2+2 = 382

get(2) get(n+1)*2+2 = 382*2+2 = 766

get(1) get(n+1)*2+2 = 766*2+2 = 1534

至此递归条件结束

c语言中的递归函数

先看看下面的例子:

void fun(int i)

{

if (i0)

{

fun(i/2);

}

printf("%d\n",i);

}

intmain()

{

fun(10);

return 0;

} 展开后如下:好理解了吧void fun(int i)

{

if (i0)

{

//fun(i/2);

if(i/20)

{

if(i/40)

{

}

printf("%d\n",i/4);

}

printf("%d\n",i/2);

}

printf("%d\n",i);

}

这样一展开,是不是清晰多了

c语言中递归函数

调用过程就是自己调用自己,直到满足退出条件,这个很重要

比如要求5的阶乘,先要求4的阶乘,接着求3的阶乘,。。。最后当n=1时,直接return 1

也就结束了递归。其实很好理解的。。

讲一下c语言中递归函数的使用方法

递归函数有三点要求:

1,递归的终止点,即递归函数的出口

2,不断的递归调用自身

3,递归函数主体内容,即递归函数需要做的事情

ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。

具体例子如下:

void fun(int n)

{

if(n=0) return;   //1 这是递归的终点,即出口

fun(n-1);        //2、递归函数自身的调用

coutnendl;     //3 递归函数的主体内容

}

2,3合并的情况

int fun(int n)

{

if(n=0) return 0;

return fun(n-1)+fun(n-2);  //2 3合并

}

C语言中递归函数是,非递归函数是?能否举例子?

直接或间接调用自已的函数就是递归函数,否则为非递归函数。如:

unsigned fun(unsigned x){

if(x==1 || x==0)

return 1;

return x*fun(x-1);

}

这个函数的体中出现了调用自己的语句fun(x-1);,所以是递归函数。


当前标题:c语言中的归函数,c语言定义递归函数
本文链接:http://scjbc.cn/article/heegpe.html

其他资讯