什么是递归算法,递归算法需要调用几次函数
什么是递归算法
递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。
汉诺塔的递归算法:
voidmove(charx,chary){
printf(“%c—>%c\n”,x,y);
voidhanoi(intn,charone,chartwo,charthree){
/*将n个盘从one座借助two座,移到three座*/
if(n==1)move(one,three);
else{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
main(){
intn;
printf(“inputthenumberofdiskes:”);
scanf(“%d”,&n);
printf(“Thesteptomoving%3ddiskes:\n”,n);
hanoi(n,’A’,’B’,’C’);
我说下递归的理解方法
首先:对于递归这一类函数,你不要纠结于他是干什么的,只要知道他的一个模糊功能是什么就行,等于把他想象成一个能实现某项功能的黑盒子,而不去管它的内部操作先,好,我们来看下汉诺塔是怎么样解决的
首先按我上面说的把递归函数想象成某个功能的黑盒子,voidhanoi(intn,charone,chartwo,charthree);这个递归函数的功能是:能将n个由小到大放置的小长方形从one位置,经过two位置移动到three位置。那么你的主程序要解决的问题
还没有评论,来说两句吧...