有多少收费网站,做期货新闻比较好的网站,西安企业网站,深圳网站建设制作优化#x1f929;本文作者#xff1a;大家好#xff0c;我是paperjie#xff0c;感谢你阅读本文#xff0c;欢迎一建三连哦。 #x1f970;内容专栏#xff1a;这里是《C知识系统分享》专栏#xff0c;笔者用重金(时间和精力)打造#xff0c;基础知识一网打尽#xff0c;… 本文作者大家好我是paperjie感谢你阅读本文欢迎一建三连哦。 内容专栏这里是《C知识系统分享》专栏笔者用重金(时间和精力)打造基础知识一网打尽希望可以帮到读者们哦。 内容分享本期会对C语言中的重点知识函数进行具体讲解各位看官姥爷快搬好小板凳坐好叭。 不要998只要一件三连三连买不了吃亏买不了上当(写作不易求求了)。 目录 前言
1. 函数的嵌套调用和链式访问
️1.1 嵌套调用
1.2 链式访问 2. 函数的声明和定义
2.1 函数声明
2.2 函数定义
3. 函数递归
3.1 递归的含义
3.2 递归的必要条件
3.3 递归与迭代的区别
3.3 递归易出现的问题
3.4 解决方法
总结 前言
在本专栏中上期文章我们对函数的定义库函数自定义函数函数的形参和实参以及传值和传址调用进行了详细的分析本期文章我们的讲解对象还是函数我们接着上期的内容我们往下讲将对函数的嵌套定义和调用声明和定义函数的递归进行分析。各位看官姥爷快带上自己心爱的小板凳前来观看叭。
1. 函数的嵌套调用和链式访问
函数和函数之间是可以根据实际需求来进行组合的就是互相调用往往一直大型的项目里就常有这种现象。
️1.1 嵌套调用
一个函数里面镶嵌着另一个函数这就叫做嵌套调用。但是注意函数可以嵌套调用但是嵌套定义是万万不能的要是你问为什么那我只能告诉你就是这么规定的 1.2 链式访问 链式访问顾名思义就是像一条链条一样访问各个函数。链式访问中是把一个函数的返回值作为另一个函数的参数使用。 2. 函数的声明和定义
2.1 函数声明
声明就是告诉编译器有一个函数叫什么参数是什么返回类型是什么但是呢它具体存不存在声明就决定不了了。一般都要先声明函数在使用函数。声明一般放在头文件中这样子的一般是分几个文件写的
2.2 函数定义
函数的定义就是指函数的具体实现交代函数的作用、 3. 函数递归
3.1 递归的含义
程序调用自己就叫做递归程序调用自身的编程技巧称为 递归 递归 通常是把一个大型的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归 策咯只需少量的程序就可描述出解题过程中所需要的多次重复计算大大地减少了程序的代码量。 递归 的主要思考方式在于把大事化小。
3.2 递归的必要条件
递归有两个必要的条件1存在限制条件当满足这个限制条件后递归不在进行下去。2每次递归后越来越接近这个限制条件。两个条件没满足一个就会陷入死递归中。
接下来举例子给大家清晰的认识递归 3.3 递归与迭代的区别
在代码解决问题中有许多时候是用递归的方式解决问题的这只是因为它比非迭代的方式更加清晰更容易想到。但是呢递归的效率不高用迭代的方式实现效率更高虽然它的可读性差。它们两有有优点有缺点。递归就是代码简洁清晰容易想到但是效率低开销空间大。迭代反之效率高开销空间小但是代码可读性差。
下面让我们通过举例来理解它们叭 3.3 递归易出现的问题
这里还有一个问题在调用fib函数的时候如果参数比较大那么它就是报错说“stack overfliow”栈溢出。这是为什么呢因为系统分配给函数的栈空间是有限的如果出现了死循环这样就可能导致一直开辟栈空间最终栈空间就会耗尽。 3.4 解决方法
第一种就是我们上面提到的将递归改为非递归比如迭代。 第二种就是用static它是什么不会叭我可是写过一篇专门说它的文章快来看看吧http://t.csdn.cn/QCneJ替代局部变量这样不仅可以减少每次递归调用和返回产生和释放的开销而且static还可以保存递归调用的中间状态各个调用层都可以访问 总结
讲到这里我们已经将函数的内容全部讲完了想必大家对函数应该有了一个清晰的认识了叭。下一期文章我们会对数组进行讲解大家敬请期待叭