廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3190 個閱讀者
04:00 ~ 4:30 資料庫備份中,需等較久的時間,請耐心等候
 
發表文章 發表投票 回覆文章
  可列印版   加為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.020152 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言