学习函数递归总结

(本人是刚入门c语言不久的小白,写的文章可能有地方不对,小白诚恳请高手赐教)

在这里插入图片描述
好了正文开始
1.什么是函数递归:简单来说就是自定义函数内部,自己对自己进行调用,形成一个类似于循环,但跟循环的执行过程有差异的算法。

2.函数递归的两个必要条件
(1)要有限制条件(你不设置你就死循环了)
(2)每一次调用执行越来越接近这个限制条件(换汤不换药,相当于for循环里面的i=1;i<=5;i++)

例如以下局部代码
在这里插入图片描述

3.函数递归对优缺点:
(1)优点:写一个复杂过程的代码简洁,写代码速率高。
(2)缺点:代码执行速率高,比如求第n个斐波那契数列的数值(因为斐波那契数列是一个数是前一个数的前一个数的和,所以导致函数递归要把同一个数重复调用多次)

小提示(不知道斐波那契数列的小白可以去百度一下,你就明白我的意思了)

3.函数递归的主要思想
函数递归的精髓就是,把一个大的问题分化成多个类似于原问题的小问题。(掌握了这个你就基本知道函数递归的写法了)

4.函数递归的常见错误
那就是stack overfllow了(栈溢出),也就是所创建的对象在内存里栈区放不下了。最常见的栈溢出原因就是因为没写限制条件,导致死循环而发生栈溢出。

注意⚠️:有些时候你写了限制条件还是会栈溢出(这里我也没法解释原因,我这个小白知道时也是懵的,有看到的大佬可以留言解释一下)

我的解决方法:直接改成循环来实现,所以我比较喜欢用循环来写。当然函数递归也有好处,反正你那个写得顺手就用那个,前提是必须要保证结果正确。

好了,函数递归本萌新就说到这里,欢迎各位道友来指导查缺补漏,我们下期见。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值