*/
#include <stdio.h>
#define discCount 4
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;
}
}
运行结果:
(1) 当盘子个数为4时:
(2)当盘子个数为8时:
(3)当盘子个数为16时:
(4)当盘子个数为20时:
(5)当盘子个数为24时:
知识点总结:
通过汉诺塔实验我们可以得出递归方法的运用可以将一些难的算法问题变简单从而达到我们想要的结果。指数级算法的复杂度随n的增大,增大的幅度也会增大。
学习心得:
递归思想看似难懂,但却很多应用在解题,可以使问题简单。根据老师的讲解加上自己的理解发现递归并没有想象的困难。
本文发布于:2024-02-02 05:39:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682360241721.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |