php 迭代和递归,PHP有关函数的编程思想(递归与迭代)

PHP有关函数的编程思想(递归与迭代)

递归思想(递归函数):

递归思想的一个基本形式是:在一个函数中,有至少一条语句,会去调用该函数自身。

但是从代码角度来说,如果单纯是函数内部调用函数,则会出现“出不来”的现象。

则我们就必须再来解决下一个问题:怎么终止(停止)这种自身的调用 -- 找到递归函数的出口

ee95635e49e2df1279859671bcfbefe1.png

案例分析:写一个递归函数,该函数可以计算一个正整数的阶乘

数学基础:

A:1的阶乘是1

B:大于1的数的阶乘是这个数减1的数的阶乘,乘以该数的结果。

比如:要求6的阶乘:则定义一个函数jiecheng() {......};该函数可以计算n的阶乘

06d4a08b7f97414de7c0789bbd116f08.png

递归思想的总结:

为了解决一个“大”问题,根据现实逻辑,该问题可以通过比它小一级的同类问题的答案而“轻松得到”。小一级的问题又可以通过更小一级的问题而轻松得到,依次类推 -- 直到“最小问题”,通常就是一个已知数(已知答案)。

递归思想的图示:

7352c83155ff96044a2c752dbd749db7.png

迭代思想(递推思想):

递推思想本身并不跟函数有直接关系(虽然常常写在函数中)

其基本思路为:

为了解决一个“大”问题,根据现实逻辑,如果能够找到同类问题的一个“最小问题”的答案(通常是已知的),并且根据已知算法,又可以因此得到比最小问题“大一级”问题的答案。而且,依次类推,又可以得到再大一级问题的答案。最终就可以得到“最大那个问题”(即要解决的问题)的答案。

可见,该思想的过程依赖于2个条件:

1:可知同类最小问题的答案

2:大一级问题的答案可以通过小一级问题的答案经过简单运算规则而得到。

此思想的解题思路是:从小到大。对比递归思想是:从大到小,再回归到大。

举例:求斐波那契数列的第n项的值:

斐波那契数列(Fibonacci Sequence)的规则是:某项的值是其前两项的值的和。前几项的值为:1,1,2,3,5,8,13,21......(前两项是已知的)

0fc345aaf75066e37b682cc28a2a491f.png

递推算法的图示:

d2158cdc57c3bc50e7dbe283ec7eaed2.png

总结比较:

1:很多问题,用递归和递推都可以解决。

2:有些问题只能用递归

3:如果两种方法都可以解决,推荐使用递推 -- 效率高很多!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值