C语言(函数递归与迭代)

                                                      递归

一,什么是递归

(1) 递归其实是一种解决问题的方法,在C语言中,递归就是自己调用自己。

二,递归的思想 

(1) 把一个复杂的问题层层转化成一个与原问题相似,但规模较小的问题来求解;直到子问题不能再拆分,递归结束了。

(2)递归中的递就是递推递推到最原始的一步)的意思,归就是回归回归到开始的第一步)的意思。

三,递归的限制条件

(1) 每一个递归存在一个限制条件,当满足这一个限制条件时,递归就不再继续。

(2) 每当进行一次递归之后就会越来越接近这个应该限制条件。

eg:求n的阶乘

代码

运行结果:当输入4,5结果为

为了更好的理解我们看一看下面图片

eg:按顺序打印整数的每一位

代码

​​​​​​z

运行结果:输入1234,结果为

注:递归可以让代码变的简洁,但是如果递归不恰当,则会导致一些无法接受的结果。

                                         迭代

一,迭代的意义

(1),通常是指重复执行一系列操作的过程,而不仅仅是为了执行代码。

(2), 迭代通常是按照某种规则重复执行某些操作,直到满足特定条件为止。

二,迭代与循环的差异

(1), 虽然迭代和循环在某些情况下可以相互关联,但它们并不完全相同。迭代更注重重复执行的操作本身,而循环更注重重复执行的条件和次数。

(2), 在C语言中,我们通常使用循环来实现迭代,但迭代并不一定需要循环来实现

eg:斐波那契数列

方法一:递归

运行结果:当输入5

但是这个会让工程量变大;让开头的数字以指数的形式利用,从而使工程量变得十分巨大。

​​​​​了更好的理解。修改以后的代码为:

运行结果:当输入40(其中结果错误,但是其中的count为每一次调用3的次数)

这图能更好的理解调用“3”的次数

如图“3”被调用39088169次。并不是可以用递归一定要用递归,要根据实际情况来选择。

当我们用迭代就可以降低计算量。

迭代代码

运行结果:当输入5

迭代在这大大减小了计数量,从而减小了处理时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值