递归的经典问题 汉诺塔 阶乘 兔子繁殖

来源:互联网 发布:港台电视直播软件 编辑:程序博客网 时间:2024/04/30 02:25

/**

 汉诺塔问题

 

 @param num 移动的盘子数量

 @param x   从那个柱子开始移动  原柱子

 @param y   移到那个柱子上     目标柱子

 @param z   辅助柱子          辅助柱子

 */

NSInteger numOfMoveTimes =0 ;

void hanoi(int num,char x, char y,char z){

    if (num>1) {

        

        hanoi(num-1, x, z, y);

        printf("%ld  %c - > %c\n",(long)numOfMoveTimes ++,x,y);

        hanoi(num-1, z, y, x);

        

    } else {

        

        printf("%ld  %c - > %c\n",(long)numOfMoveTimes ++,x,y);

        

    }

    

    

    

}


int  jieCheng(int a) {

    if (a>1) {

        returnjieCheng(a-1) * a ;

        

    } else {

        

        return1 ;

        

    }

    

}


int robit(int a ) {

    if (a>2) {

        returnrobit(a-1) +robit(a-2) ;

    } else {

        return1 ;

    }

    

}


int main(int argc,const char * argv[]) {


//    hanoi(6, 'a', 'b', 'c');

    

//    printf("阶乘  %d  \n", jieCheng(9));

//    printf("兔子繁殖  %d  \n", robit(8) );

}



0 0