1. 程式人生 > >第二週專案3-體驗複雜度(2)漢諾塔

第二週專案3-體驗複雜度(2)漢諾塔

問題及程式碼:

/* 
*煙臺大學計算機與控制工程學院  
*檔名稱:lulu.cpp  
*作    者:蘆亞茹 
*完成日期:2015年9月13日  
*問題描述:漢諾塔 
*輸入描述:無 
*程式輸出:移動的次數 
*/  
#include <stdio.h>   
#define discCount 4   
long move(int, char, char,char);  
int main()  
{  
    long count;  
    count=move(discCount,'A','B','C');  
    printf("%d個盤子需要移動%ld次\n", discCount, count);  
    return 0;  
}  
long move(int n, char A, char B,char C)  
{  
    long c1,c2;  
    if(n==1)  
        return 1;  
    else  
    {  
        c1=move(n-1,A,C,B);  
        c2=move(n-1,B,A,C);  
        return c1+c2+1;  
    }  
}  

執行結果:

知識點及總結:

採用了遞迴演算法,難度在於指數級的運算

學習心得:

進一步練習了遞迴演算法,體驗了複雜度。