广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3338 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
terryshao
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x72
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[PHP][讨论] (问题3):递回函数
<html>
<head><title>递回函数</title>
<?
// 函数计算n!的值
function factorial($n) {
  if ( $n == 1 ) /* 终止条件 */
    return 1;
  else
    return $n * factorial($n-1);
}
?>
</head>
<body>
4!=<? echo factorial(4)?><br>
<?
$result = factorial(5);
print "5!=". $result ."<br>";
?>
</body>
</html>

一开始使用$n * factorial($n-1)....这边应该不是明确的公式吧
但是后面却可以利用$n * factorial($n-1)....做运算??
factorial(4)应该只是变成只有4!=$4 * factorial($4-1).....这是要算什么?
没有数学公式也能运算吗



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2006-08-04 11:33 |
rencung 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x8
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

应该说你还不懂递回是什么吧
以你的例子来说
factorial(4)应该只是变成只有4!=4 * factorial($4-1)
没错是这样,但factorial($4-1)的部份仍要继续计算factorial($3)
因为n不等于1嘛,所以式子变成4!=4*3*factorial($3-1)
以此往下推到n=1时
最后4!=4*3*2*1啰


献花 x0 回到顶端 [1 楼] From:台湾 台北市 | Posted:2006-08-04 14:04 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这怎么不是明确的公式?
我们用 3 来当作输入的参数好了, 这程式的执行流程会是:

Step1: 3 * factorial(3-1) => 电脑会解读为 3 * factorial(2), 这时就会先将3放在记忆体中, 然后去作factorial(2)的动作, 等有了结果, 再把结果跟记忆体里的 3 相乘.

Step2: factorial(2) => 刚刚呼叫了factorial(2), 所以电脑会解读为 2 * factorial(1), 这时就会先将2放在记忆体中, 然后去作factorial(1)的动作, 等有了结果, 再把结果跟记忆体里的 2 相乘.

Step3: factorial(1) => 刚刚呼叫了factorial(1), 依照factorial的程式码直接回传1.

Step4: 把刚刚算好的1拿来跟2相乘, 结果是2, 然后传回结果.

Step5: 把刚刚算好的2拿来跟3相乘, 结果是6, 输出答案!

就是这样, 一点也没有什么奇怪之处.


[ 此文章被ety在2006-08-11 11:03重新编辑 ]


献花 x0 回到顶端 [2 楼] From:台湾和信超媒体 | Posted:2006-08-07 07:48 |
terryshao
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x72
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

2楼的大大写出详细的解法让我恍然大悟
歹事....有时候脑筋转不过来...
2.3楼的大大让我完全了解是怎么一回事了...
如果大大出书我一定会买吧...太仔细了


献花 x0 回到顶端 [3 楼] From:台湾中华电信 | Posted:2006-08-10 22:51 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.052692 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言