English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

int c(int n,int m)
{
if(n==m || m==0)
return 1;
else
return c(n-1,m)+c(n-1,m-1);
}
以上是我的副程式
請問他是怎麼跑的 假如輸入m=4,n=2
那他會怎麼跑遞迴 謝謝

2006-11-14 21:18:59 · 2 個解答 · 發問者 edward 1 in 電腦與網際網路 程式設計

不好意思 我打錯M N了 是N=4 M=2 不然C2取4 沒意義= =

2006-11-15 07:11:38 · update #1

2 個解答

1.   2!=4 && 4!=0 => else => 跑 c( 1,4)a + c( 1,3)b2. a 1!=4 && 4!=0 => else => 跑 c( 0,4)c + c( 0,3)d  b 1!=3 && 3!=0 => else => 跑 c( 0,3)e + c( 0,2)f3. c 0!=4 && 4!=0 => else => 跑 c(-1,4)g + c(-1,3)h...大致像這樣。但,應該不會出現 -1 才對!(你沒檢查到 n)不是我弄錯了,就是你公式抄錯了!你對一下公式看看!

2006-11-16 00:30:59 補充:
您照我的樣子試試吧。
不然,照 backerkuo 的方法也不錯!
 但,建議您,看著印出的結果,一定要自己想過,才會真的懂!!

2006-11-16 00:45:27 補充:
1. 4!=2 && 2!=0 => else => 跑 c( 3,2)a + c( 3,1)b2. a 3!=2 && 2!=0 => else => 跑 c( 2,2)c + c( 2,1)d  b 3!=1 && 1!=0 => else => 跑 c( 2,1)e + c( 2,0)f

2006-11-16 00:45:42 補充:
3. c 2==2 || 不管 => return 1 d 2!=1 && 1!=0 => else => 跑 c( 1,1)g + c( 1,0)h e 2!=1 && 1!=0 => else => 跑 c( 1,1)i + c( 1,0)j f 不管 || 0==0 => return 14. g 1==1 || 不管 => return 1 h 不管 || 0==0 => return 1 i 1==1 || 不管 => return 1 j 不管 || 0==0 => return 1

2006-11-16 00:45:58 補充:
5. 因為 4. 已經都解決了,就帶回去吧! d = g + h = 1 + 1 = 2 e = i + j = 1 + 1 = 26. a = c + d = 1 + 2 = 3 b = e + f = 2 + 1 = 37. C(4, 2) = a + b = 3 + 3 = 6

2006-11-14 22:54:58 · answer #1 · answered by ? 7 · 0 0

把它全部印出來就可以看到程式怎麼跑了,不是嗎?

2006-11-14 23:17:53 · answer #2 · answered by Backer 2 · 0 0

fedest.com, questions and answers