ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C语言学习--回顾(12)

C语言学习--回顾(12) 第十二篇目录第十二篇6.递归6.1递归的解释6.2递归的核心要素6.3递归举例16.4递归举例26.5递归举例36.6程序性能分析6.7递归与循环6.8二分法在递归中的实现6.递归6.1递归的解释6.2递归的核心要素6.3递归举例1a初步考虑后可以发现对于求某个数的阶乘只需要它的上一个数的阶乘乘以它本身即可而上一个数的阶乘又可以转换为上上个数的阶乘乘以上一个数如此往前一直推导最后能推导到源头1然后再由1逐步往后即可推出阶乘代码实现过程图例6.4递归举例26.4.1分析a这次递归相当于将1234逐步拆解为1 2 3 4用%10将末位一个个去掉直到1然后利用每层拆解得到的数进行%10得到该拆解步骤中得到的那一位数字就可以拼接起来了6.4.2画图分析6.5递归举例36.5.1分析与代码实现a不难发现斐波那契数列直接将递归摆在明面上告诉你因为每一步都涉及对于上一步的调用所以直接简单的将定义放到代码即可6.6程序性能分析a为什么说递归低效因为递归每次调用的数量在指数级增长。比如我一个递归程序需要两次调用如果我调用八层递归就会调用2的8次方的程序造成大量冗余6.6.1栈溢出6.7递归与循环6.7.1递归与循环的抉择6.8二分法在递归中的实现看如下代码a从代码实现上实际上就是将循环变为递归执行二分法
返回列表