Private Sub hanoi(n%, one$, two$, three$)If n = 1 ThenPrint one, threeElsehanoi n - 1, one, three, twoPrint one, threeEnd IfEnd Sub Private Sub Form_Click()hanoi 2, "a", "b", "c"End Sub 结果是 a b a c 但是将 hanoi 2,"a","。
。。 Private Sub hanoi(n%, one$, two$, three$)If n = 1 ThenPrint one, threeElsehanoi n - 1, one, three, twoPrint one, threeEnd IfEnd SubPrivate Sub Form_Click()hanoi 2, "a", "b", "c"End Sub结果是a ba c但是将 hanoi 2,"a","b","c" 换成 hanoi 3,"a","b","c" 结果就是a ca ba c求详细解释电脑是怎么得到这结果的。
。。一步一步啊。。我应该没理解递归,能顺带讲一下最好了 展开 Private Sub hanoi(n%, one$, two$, three$)If n = 1 ThenPrint one, threeElsehanoi n - 1, one, three, twoPrint one, threeEnd IfEnd SubPrivate Sub Form_Click()hanoi 2, "a", "b", "c"End Sub结果是a ba c但是将 hanoi 2,"a","b","c" 换成 hanoi 3,"a","b","c" 结果就是a ca ba c求详细解释电脑是怎么得到这结果的。
。。一步一步啊。。我应该没理解递归,能顺带讲一下最好了百度吞了换行 这里补充。
首先,当n=1的时候,a-c你懂啥。当n=2的时候,电脑先执hanoi 2 a b cif不可行,然后执行 hanoi 1 a c b if可行,结果one,three对应着 a-b。
接着再执行上面未完的hanoi n a b c 结果对应着a-c。下面来看三,先是hanoi 3 a b c执行elsehanoi 2 a c b else hanoi 1 a b c注意,这里bc的位置又换了回来。
所以,在hanoi 1 a b c(属于hanoi n-1 a c b) 结果 a-c然后回归,hanoi 2 a c b print a-b 接着回归最开始的hanoi 3 a b c print a-c。
在这个过程中,换位是重点。