1. 程式人生 > >【資料結構】遞迴演算法—漢諾塔

【資料結構】遞迴演算法—漢諾塔

漢諾塔的問題,也是一個經典的遞迴演算法問題。

下面是自己總結的一張整體流程圖。


下面是程式碼,程式碼雖簡單,但理解其內部執行原理很重要。

//======================================================================    
//    
//        Copyright (C) 2014-2015 SCOTT        
//        All rights reserved    
//    
//        filename: HanNuoTa.c  
//        description: a demo to display HanNuoTa  
//    
//        created by SCOTT at  02/10/2015   
//        http://blog.csdn.net/scottly1  
//    
//====================================================================== 

#include <stdio.h>

void HanNuoTa(int n, char a, char b, char c)
{
	if( n < 1 )
		return ;	
	HanNuoTa(n-1, a, c, b);
	printf("把第%d盤子通過%c移到%c\n", n, a, c);
	HanNuoTa(n-1, b, a, c);
}

int main()
{
	int num;

	printf("Input The Num you want to create:");
	scanf("%d", &num);

	HanNuoTa(num, 'A', 'B', 'C');

	return 0;
}

執行結果:


如果對電腦的演算法有懷疑,大家可以自己動手算算,看看它的方法是不是最優的。

原創文章,轉載請著名出處:http://blog.csdn.net/scottly1/article/details/43705291