2016 - 2024

感恩一路有你

递归算法c语言 C语言中的递归程序可以用非递归算法实现吗?

浏览量:1798 时间:2021-03-13 18:20:26 作者:admin

C语言中的递归程序可以用非递归算法实现吗?

是的,所有递归都可以用循环和堆栈等价重写。

汉诺塔递归算法?

1//河内塔

2#包括和酒店。H>

3 void Hanoi(int n,char a,char b,char c)//这里表示在b列的帮助下将a列上的图版移到c列

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

5{

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

7}

8 else

9{

10 Hanoi n-1,a,c,b)//move n-1 plates on column a to column B with the column C

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

12 Hanoi(n-1,B,a,C)//然后将B列的n-1板移到C

13}

14}

15 int main()

16{int n

17 printf输入磁盘数:”)

18 scanf(%d“,&n)

19 Hanoi(n,%a”,%B“,%C”)

20返回0

21}

复制代码

这是一个递归算法。

在第一步中,n-1块黄金通过C从a移到B

不是一步,而是一个阶段(递归调用)。

假设已完成,第二步即可完成。

在上述两个步骤的基础上,在第三个步骤中,n-1块黄金从B通过a移动到C,所有工作都完成了。

========

关于如何完成“n-1块黄金由a经C移到B”,需要“老和尚给小和尚讲故事”

第一步是先移n-2块黄金,再移n-1块黄金,最后将n-2块黄金移到位。

递归算法c语言 汉诺塔c语言程序 汉诺塔递归算法c语言

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。