您当前的位置: 首页 >  小程序

郭梧悠

暂无认证

  • 2浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

递归实现回旋数组的小程序

郭梧悠 发布时间:2012-10-13 09:13:34 ,浏览量:2

写个算法:打印如下形式的数字

9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 8 9 9 8 7 6 6 6 6 6 6 6 6 6 6 6 7 8 9 9 8 7 6 5 5 5 5 5 5 5 5 5 6 7 8 9 9 8 7 6 5 4 4 4 4 4 4 4 5 6 7 8 9 9 8 7 6 5 4 3 3 3 3 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 2 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 2 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 3 3 3 3 4 5 6 7 8 9 9 8 7 6 5 4 4 4 4 4 4 4 5 6 7 8 9 9 8 7 6 5 5 5 5 5 5 5 5 5 6 7 8 9 9 8 7 6 6 6 6 6 6 6 6 6 6 6 7 8 9 9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 8 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9

 

下面是递归实现:

public class DiGuiHuiXuan {

    /**
     * 本递归算法得思路是:把二维数组看成回行圈,赋值的时候先赋值二维数组的最外围,
     * 有外而内一圈一圈的递归赋值
     *注意根据数组下标从0开始的特点,每一圈的子二维数组的maxRow和minRow
     * maxColumn 和minColumn有如下数学关系
     * maxRow + minRow = array.length -1
     * maxColumn + minColumn = array.length-1
     * @param array
     * @param n 回旋数组开始指定的数,或者说是递归调用中子二维数组的最外圈的值
     * @param m 记录每一圈的二维子数组的最大行和最大列
     */
    public static void huiXuan(int[][] array, int n, int m) {
        //递归出口
        if (1 == n) {
            //取数组的中心位置
            int center = array.length >> 1;
            array[center][center] = 1;
            return;
        }

        //最下面的行
        int maxRow = m;
        //最右边的列
        int maxColums = m;
        //最上面的行
        int minRow = array.length - 1 - maxRow;
        //最左边的列
        int minColums = array.length - 1 - maxColums;

        //(子)二维数组的最上面一行
        for (int i = minColums; i             
关注
打赏
1663674776
查看更多评论
0.0424s