汉诺塔-递归编程

Posted 超浪*牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉诺塔-递归编程相关的知识,希望对你有一定的参考价值。

汉诺塔

在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

现在请你计算出起始有m个金片的汉诺塔金片全部移动到另外一个针上时需要移动的最少步数是多少?

/***********************************************************
*版权所有:(C) 2021.6.12 烽火大队-狼烟一号(第八方面军) 
* 
*文件名称: 
*内容摘要:	递归
*当前版本: 1-1 
*文件作者:牛鹏 
*完成日期:2021.6.17
*备注	 :递归法
*修改记录:暂无 
***********************************************************/
#include <stdio.h>
#include <stdlib.h>
int fun(int n){
	if(n == 1){
		return 1;
	}else{
		return 2*fun(n-1)+1;
	}
} 
int main() {
	printf("%d",fun(5));
	return 0;
}

输入:5(代表是5个金片)
正确输出:31(表示移动31次)

以上是关于汉诺塔-递归编程的主要内容,如果未能解决你的问题,请参考以下文章

汉诺塔的C语言代码怎么写啊

用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)

编程:递归编程解决汉诺塔问题(用java实现)

汉诺塔递归

汉诺塔-递归编程

C语言汉诺塔问题