函数递归讲解

1.什么是递归

2. 递归的限制条件

3. 递归的举例

4. 递归与迭代

1.什么是递归

1.1递归是什么

在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰

上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归,导致栈溢出

递归思想:

大事化小的过程;

递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会

2 递归的限制条件

1.递归存在限制条件,当满⾜这个限制条件的时候,递归便不再继续。

2.每次递归调⽤之后越来越接近这个限制条件。

这是递归的两个必要条件。

3 递归举例

求n的阶乘

5的阶乘就是5*4*3*2*1

4的阶乘就是4*3*2*1

3的阶乘就是3*2*1

顺序打印⼀个整数的每⼀位

比如输入1234

打印1 2 3 4

4. 递归与迭代

递归是⼀种很好的编程技巧,但是很多技巧⼀样,也是可能被误⽤的,就像求阶乘⼀样,看到推导的公式,很容易就被写成递归的形式

如果不想使⽤递归就得想其他的办法,通常就是迭代的⽅式(通常就是循环的⽅式)

事实上,我们看到的许多问题是以递归的形式进⾏解释的,这只是因为它⽐⾮递归的形式更加清晰, 但是这些问题的迭代实现往往⽐递归实现效率更⾼。

求第n个斐波那契数

斐波那契数: 1 1 2 3 5 8 13 21 34......

像这样前两项之和等于第三项的就是斐波那契数

但当我们输入50的时候,需要很长一段时间出现结果,并且结果是错误的。

原因是递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计 算,⽽且递归层次越深,冗余计算就会越多

通过count能够体现。

修改一下代码

迭代的⽅式去实现这个代码,效率就要⾼出很多了。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值