作者rex51920594 (rex51920594)
看板Grad-ProbAsk
標題[理工] 演算法 - 遞迴
時間Tue Aug 14 01:36:14 2018
The following recursive program segment is written in C language.
Write the output if it is called with the instruction xbox (3, ‘A’, ‘B’,
‘C’).
void xbox (int n, char x, char y, char z)
{
if (n > 0 ) {
printf(“%c %c %c \n”, x, y, z);
xbox (n-1 , x, z, y);
xbox (n-1 , y, x, z);
}
}
解:
n = 3 A B C
n = 2 A C B
n = 1 A B C
n = 1 C A B
n = 2 B A C
n =1 B C A
n =1 A B C
----------------
剛碰演算法,有點不太懂這如何做出來的
n = 3 A B C
n = 2 A C B ←到這裡都還懂
下面就想破頭也想不出道理...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.76.122
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1534181778.A.BA3.html
※ 編輯: rex51920594 (1.169.76.122), 08/14/2018 01:37:53
→ seika555: 一圈一圈遞迴下去想比較好想 08/14 02:14
謝謝你還畫圖,這樣就很清楚了
推 hacocu831735: 請問為什麼n=0時不會繼續遞迴?不就只是不會印出東 08/14 04:16
→ hacocu831735: 西而已嗎? 08/14 04:16
推 goldstorm: n=0不會進入if (n > 0)的條件裡 08/14 09:54
推 seika555: 因為不會進到if裡面 所以不會印出東西 就不會再遞迴下去 08/14 09:57
→ seika555: 了吧 08/14 09:57
推 hacocu831735: 感謝…沒看清楚括號 08/14 10:09
※ 編輯: rex51920594 (1.169.76.122), 08/14/2018 20:12:59