迭代和递归

迭代利用变量的原值推出新值称为迭代,或着说迭代是函数内某段代码实现循环;

迭代:从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。这里可以看作是每次运行都变更条件的一个for循环。例如 for (i=1 , i<100 , i++) ,迭代就是自己执行很多次,每次都能排除一个,直到找到结果。
数组迭代:可以使用 for 语句来循环输出数组的各个元素

递归重复调用函数自身实现循环称为递归;

递归就是,每次循环都包含自己的请求,子问题必须携带原始问题,且一次一次缩小范围,最终找到结果。

什么是递归函数:递归函数即在函数内调用函数本身。函数不断调用自己 就相当于不断地嵌套本函数

举个例子:
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"

 搜索其他资料发现一些不错的想法,搬运了过来。

举个例子吧:你要给某个小孩子买玩具。

递归:你自己不太了解小孩子的需求,为了缩小范围,让你的儿子去给孙子挑选。儿子比你强点有限,但依然不太了解小孩子的需求。为了缩小范围,你又让你孙子去挑选。如此这般,直到找到合适的玩具。

迭代:

 你去小卖铺买了个一个玩具,拿回家后孩子不喜欢。你耐心的询问后得知他喜欢乐高的玩具,于是你就去大超市给他买了乐高,回家后孩子还是不喜欢,耐心询问后得知他喜欢乐高玩具中最贵的那个玩具,于是你就去奢侈品商店给他买了乐高限量版玩具,拿回家后孩子很满意。

每次去买玩具都跟上一次不一样,或是有了新的目标,或是缩小了搜寻范围,自己执行很多次,每次都能排除一个,直到找到结果。这叫迭代。

所以一句话:递归是自己调用自己,每次旨在缩小问题规模。迭代是自己执行很多次,每次旨在更接近目标。

【循环】和【迭代】的区别:

循环和迭代的共同点在于,它们都是在描述一个多次操作

不同点在于,【循环】侧重于描述每次操作和上一次操作相同之处,而【迭代】侧重于描述每次操作和上一次操作的不同之处。

比如一个 for 循环,其中的逻辑每次执行都相同,我们可以说它是一个循环。但 for 循环中定义的局部变量 i(每次循环自增的那个),每次执行都会有新的值代替旧的值,我们可以说它是在迭代。

如果硬要套用买玩具的例子:你要给某个小孩子买玩具。

【循环】

你去小卖铺买了一个玩具,拿回家后孩子不喜欢,你也没问他为什么不喜欢。然后你又去同一个小卖铺买了一个玩具,拿回家后孩子又不喜欢。。。如此往复 10 次,孩子才满意。

每次去买玩具的目标、行为都一样,这叫循环。

【迭代】

你去小卖铺买了个一个玩具,拿回家后孩子不喜欢。你耐心的询问后得知他喜欢乐高的玩具,于是你就去大超市给他买了乐高,回家后孩子还是不喜欢,耐心询问后得知他喜欢乐高玩具中最贵的那个玩具,于是你就去奢侈品商店给他买了乐高限量版玩具,拿回家后孩子很满意。

每次去买玩具都跟上一次不一样,或是有了新的目标,或是缩小了搜寻范围,这叫迭代。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值