算法之汉诺塔

来源:互联网 发布:mac适合做java开发吗 编辑:程序博客网 时间:2024/06/05 11:24
//单色汉诺塔void hanoi(int n, char A, char B, char C){    if(n == 1)        printf("move %d from %c to %c\n",n,A,C);//步骤2:将A中最后一个盘子从A直接移至C    else    {        hanoi(n-1,A,C,B);//步骤1:将A中最上面n-1个盘子从A通过C移至B        printf("move %d from %c to %c\n",n,A,C);//步骤2:将A中最后一个盘子从A直接移至C        hanoi(n-1,B,A,C);//步骤3:将B中n-1个盘子从B通过A移至C    }//    if(n >=1 )//    {//        hanoi(n-1,A,C,B);//        printf("move %d from %c to %c\n",n,A,C);//        hanoi(n-1,B,A,C);//    }}void main(){    //盘子个数的奇偶性会影响首次移动盘子的方向    hanoi(3, 'A', 'B', 'C');}

f(1) = 1, (n=1)
f(n) = 2*f(n-1) + 1, (n>1)

f(n) + 1 = 2(f(n-1) + 1)
f(n) = 2^n -1, (n>0)

原创粉丝点击