作者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://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1534181778.A.BA3.html
※ 编辑: rex51920594 (1.169.76.122), 08/14/2018 01:37:53
2F:→ seika555: 一圈一圈递回下去想比较好想 08/14 02:14
谢谢你还画图,这样就很清楚了
3F:推 hacocu831735: 请问为什麽n=0时不会继续递回?不就只是不会印出东 08/14 04:16
4F:→ hacocu831735: 西而已吗? 08/14 04:16
5F:推 goldstorm: n=0不会进入if (n > 0)的条件里 08/14 09:54
6F:推 seika555: 因为不会进到if里面 所以不会印出东西 就不会再递回下去 08/14 09:57
7F:→ seika555: 了吧 08/14 09:57
8F:推 hacocu831735: 感谢…没看清楚括号 08/14 10:09
※ 编辑: rex51920594 (1.169.76.122), 08/14/2018 20:12:59