考考本身 遞歸應該怎麼看?

void han(int num,char a,char b,char c)ide

{spa

   if(num<=0)return ;遞歸

   // step 1it

   han(num-1,a,c,b);//將除最下面一個的全部經過c轉到bclass

   // step 2im

   printf("%d:%c---------->%c\n",num,a,c);//acmargin

   // step 3top

   han(num-1,b,a,c);//將除最下面一個的全部經過a轉到c,這個調用還有ab交換的處理di

}view

han(n/*多少個盤子*/,'A','B','C');

能夠想象一下,按照常人的理解,在很少盤子的狀況下  是能夠手動寫出來.

可是多了呢?很明顯,不能這樣作,那該如何理解上面的遞歸呢?

<1>遞歸處理的返回斷定

<2>K = N - 1 時

<3>K = N 時

怎麼樣  有啓發沒?

反過來  即 假如當前把全部的盤子 除了最上面的沒有移到指定位置,那麼就是<1>,依此K = 2...N

相關文章
相關標籤/搜索