第二週 專案3(2)--體驗複雜度---漢諾塔
阿新 • • 發佈:2019-02-15
/*
*Copyright (c)2016,煙臺大學計算機學院
*All rights reserved.
*檔名稱:傳寫.cpp
*作者:李欣
*完成日期:2016年9月8日
*版本號:v1.0
*
*問題描述:用遞迴演算法求解漢諾塔問題,體驗盤子數為4、8、16、20、24時在時間耗費上的差異。
*輸入描述:無
*輸出描述:輸出不同盤子所耗費的時間
*/
#include <stdio.h>
#define discCount 30 //數值可改動
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;
}
}
執行結果:
知識點總結:
演算法的複雜度
學習心得:
在這個過程中,隨著盤子數量的增加,所消耗的時間也在增加,而且到達盤子過多時會出現系統不能執行的情況。通過這個程式讓我對演算法複雜度有了一個更深入的瞭解,開心ing...