首页 > 常见问答

python递归算法经典实例 汉诺塔递归算法?

汉诺塔递归算法?

1//河内塔

2#包括和酒店。h>

3voidhanoi(intn,chara,charb,charc)//这里表示在b列的帮助下将a列上的图版移到c列

4{if(1==n)//如果是图版,将a列上的图版移到c列

python递归算法经典实例 汉诺塔递归算法?

5{

6printf(%c-->%cn,a,c)

7}

8else

9{

10hanoin-1,a,c,b)//moven-1platesoncolumnatocolumnbwiththecolumnc

11printf(%c-->%cn“,a,c)//将a列的最后一块板移到c列

12hanoi(n-1,b,a,c)//然后将b列的n-1板移到c

13}

14}

15intmain()

16{intn

17printf输入磁盘数:”)

18scanf(%d“,&n)

19hanoi(n,%a”,%b“,%c”)

20return0

21}

递归的主要思想是能够重复一些操作,如简单阶乘、幂、回溯中的八皇后、数独、汉诺塔和分形。

由于堆栈机制,一般递归可以保持一些变量处于历史状态,例如返回x*power。。。您提到过,但是有些问题可能很大或太深,需要尽可能避免递归,因为堆栈可能会溢出。另一个

问题是python不支持尾部递归优化

所以尽量避免递归。

defpower(x,n)

如果n<0:

return1

returnx*power(x,n-1)

power(3,3)

3*power(3,2)

3*(3*power(3,1))

3*(3*power(3,0))

3*(3*1)),其中n=0,return1

3*(3*3)

3*9

当函数参数n=0时,开始撤退到第一次通电结束。

python递归算法经典实例汉诺塔python用递归实现python递归汉诺塔详解

原文标题:python递归算法经典实例 汉诺塔递归算法?,如若转载,请注明出处:https://www.saibowen.com/wenda/17936.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。