php中的递归思想,PHP 递归和递推思想

递归思想(递归函数):

递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身。(求n!问题用递归;杨辉三角问题用过递归…)

funtion digui($n){

if($n==1){

return 1;

}

return digui($n-1)*$n;

}

$a=6;

echo "{$a}的阶乘为:{$a}!=".digui($a);

结果为:

递归思想总结:

为了解决一个“大”问题,根据现实逻辑,该问题可以通过比它小一级的同类问题的答案得到。小一级的问题又可以根据更小一级的问题的答案得到。以此类推,直到“最小一级问题”的答案是一个已经的。

递归思想图例:

递推思想(迭代思想):

递推思想和递归思想很相似,都是需要知道“最小一级问题”的答案。

我们先来看递推思想图例:

区别:

对比图例后我们可以发现递归和递推是有所差异的,递推的整体思想是从小到大,而递归的整体思想是从大到小,再从小回到大。简单说,递推是更新变量的旧值,递归是在函数中调用函数自身。

举例: 求斐波那契数列的第n项的值(递推最经典的问题)

斐波那契数列的规律:1, 1, 2, 3, 5, 8, 13, 21…(最前的两个数都为1,从第3位开始,后面每位数为前两位数的和)

function fbnq($n){

$n1=1;//斐波那契数列第一项初始为1

$n2=1;//斐波那契数列第二项初始为1

$result=0;

for($i=3,$i<=$n;++$i){

$result=$n1+$n2;

$n1=$n2;//更新旧值

$n2=$result;//更新旧值

}

return $result;

}

$a=fbnq(7);//求斐波那契数列第7个数

echo "斐波那契数列第7项为:".$a;

递归和递推思想总结:

很多问题,递归和递推都能解决。

有些问题只能用递归。

如果两种方法都能解决,推荐使用递推,递推的效率高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值