zoukankan      html  css  js  c++  java
  • 汉若塔问题算法程序

    这是一个经典的问题,递归程序实现,子程序中两次调用自己。

    也是递归调用程序中的范例。

    递归程序的关键在于递归调用和结束条件,通常十分简洁明了。

    程序中,使用条件编译来统计子程序调用次数。

    /*
     *
     * 汉诺塔问题算法程序
     *
     */
    
    #include <stdio.h>
    
    //#define DEBUG
    #ifdef DEBUG
    int c1=0;
    #endif
    
    void hanoi(int, char, char, char);
    void move(int, char, char);
    
    int main(void)
    {
        int i;
        for(i=1; i<=4; i++)
        {
            printf("
    level=%d:
    ", i);
    #ifdef DEBUG
        c1 = 0;
    #endif
            hanoi(i, 'A', 'B', 'C');
    #ifdef DEBUG
        printf("c1=%d
    ", c1);
    #endif
        }
    
        return 0;
    }
    
    void hanoi(int n, char from, char to, char temp)
    {
    #ifdef DEBUG
        c1++;
    #endif
        if(n == 1)
        {
           move(n, from, to);
        }
        else
        {
            hanoi(n-1, from, temp, to);
            move(n, from, to);
            hanoi(n-1, temp, to, from);
        }
    }
    
    void move(int n, char from, char to)
    {
        printf("%d: %c->%c
    ",n, from, to);
    }
    
    

  • 相关阅读:
    SKAction类
    SpriteKit所有的类
    Reachability下载地址
    IOS学习教程
    SpriteKit游戏开发
    APP开发者到期续费说明
    Unique Paths
    Letter Combinations of a Phone Number
    Reverse Nodes in k-Group
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564969.html
Copyright © 2011-2022 走看看