QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
682
查看: 514|回复: 3

[已解决]递归else问题

[复制链接]
最佳答案
0 
累计签到:291 天
连续签到:1 天
Ъγ:_小ツ雨oο 发表于 2017-7-8 10:58:51 5143 | 显示全部楼层 |阅读模式
10鱼币
QQ截图20170708104030.png
p($re);
echo '<br>'; 这2句是废话
开始 时执行函数, 然后执行函数, num>5, 然后就执行
$re = $num*facto($num-1);  //就是
$re = 5*facto(5-1) ,再然后就是   $re = 4*facto(4-1) ...
一直到$num = 2的时候  $re = 2*facto(2-1)
就是: $re = 5*facto(5-1)*facto(4-1)*facto(3-1)*facto(2-1) == 5*4*3*2

下一次因为($num = 1) 不大于 1,条件不成立,, 此时$re = 120吗 ?
就不执行if判断了 执行else把$re 变成1  
然后 返回 结束函数,
不是很明白为啥这里递归  到最后明明结果是$re = 120, 又执行$re = 1这个操作,

有没有大神 帮我捋一下我的思路, 谢谢啦


最佳答案
2017-7-8 10:58:52
好像是对递归不大理解吧。
就是: $re = 5*facto(5-1)*facto(4-1)*facto(3-1)*facto(2-1) == 5*4*3*2

这里可能有点问题,应该是
  1. $re = 5*4*3*2*facto(1)
复制代码

facto(5) = 5*facto(4) = 5*(4*facto(3))= ... =5*4*3*2*facto(1)
这里就必须知道facto(1) 等于多少了,所以有else $re=1,这个就是表明facto(1) = 1;的,所以才有120的答案。

最佳答案

查看完整内容

好像是对递归不大理解吧。 这里可能有点问题,应该是 facto(5) = 5*facto(4) = 5*(4*facto(3))= ... =5*4*3*2*facto(1) 这里就必须知道facto(1) 等于多少了,所以有else $re=1,这个就是表明facto(1) = 1;的,所以才有120的答案。
楼层
跳转到指定楼层
最佳答案
12 
累计签到:35 天
连续签到:1 天
json 发表于 2017-7-8 10:58:52 | 显示全部楼层    本楼为最佳答案   
好像是对递归不大理解吧。
就是: $re = 5*facto(5-1)*facto(4-1)*facto(3-1)*facto(2-1) == 5*4*3*2

这里可能有点问题,应该是
  1. $re = 5*4*3*2*facto(1)
复制代码

facto(5) = 5*facto(4) = 5*(4*facto(3))= ... =5*4*3*2*facto(1)
这里就必须知道facto(1) 等于多少了,所以有else $re=1,这个就是表明facto(1) = 1;的,所以才有120的答案。
最佳答案
201 
累计签到:2369 天
连续签到:1 天
小甲鱼 发表于 2017-7-8 11:41:11 | 显示全部楼层
你的意思是最后为啥显示两次 120 吗?

因为你是 echo facto(num: 5);

将 facto 最后的值多打印了一次~
最佳答案
0 
累计签到:291 天
连续签到:1 天
Ъγ:_小ツ雨oο  楼主| 发表于 2017-7-8 11:48:15 | 显示全部楼层
小甲鱼 发表于 2017-7-8 11:41
你的意思是最后为啥显示两次 120 吗?

因为你是 echo facto(num: 5);

小甲鱼老湿, 我这里想不明白,  为啥要用else  自调用结果都出来了是$re = 120, 但是下面又执行else,结果不是变成$re = 1了吗, 就把上面给覆盖了, , 不明白这个else作用是啥,

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-22 13:04

快速回复 返回顶部 返回列表