递归的课后作业:
解决汉诺塔问题有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)
`
function a1(){
var num = null;
num = 1;
return num;
}
function a2(){
var num = null;
num = a1()+a1()*2;//3
return num;
}
function a3(){//移动了2阶,1阶,2阶
var num = null;
num = a1() + a2()*2;//7
return num;
}
function a4(){//移动了3阶,1阶,3阶
var num = null;
num = a1() + a3()*2;//15
return num;
}
function hannuota_n(n){
if(n === 1){
return 1;
}else{
return 1+hannuota_n(n-1)*2
}
}
console.log(hannuota_n(64));`
网友评论