用java语言递归方法如何打印这图形,求解

bkLion 2020-01-27 06:24:24
...全文
427 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bkLion 2020-02-02
  • 打赏
  • 举报
回复
引用 6 楼 faith.huan的回复:


package app.base;

import java.util.Arrays;

/**
 * @author faith.huan 2019-11-08 22:06
 */
public class PrintImage {

    // #号
    private static final byte HASH = 35;
    // 空格
    private static final byte SPACE = 32;

    public static void main(String[] args) {
        print(5, 0);
    }

    private static void print(int totalRow, int currentRow) {
        // 总长度
        int totalLength = totalRow * 4 - 1;
        // 左右两侧空格数
        int space = currentRow * 2;
        // #数
        int hash = totalLength - space * 2;
        String spaceStr = repeat(SPACE, space);
        String hashStr = repeat(HASH, hash);
        System.out.println(spaceStr + hashStr + spaceStr);
        if (++currentRow < totalRow) {
            print(totalRow, currentRow);
        }
    }


    private static String repeat(byte b, int count) {
        final byte[] single = new byte[count];
        Arrays.fill(single, b);
        return new String(single);
    }

}


阿伟受教了,感谢大佬
bkLion 2020-02-02
  • 打赏
  • 举报
回复
引用 5 楼 qybao的回复:
关键是掌握每行每列的规律,总结出一个公式
for example
public class Sample {
public static void main(String[] args) {
print1(5); //以总行数为基准
print2(4); //以行的下标为基准
}

public static void print1(int n) {
if (n==0) return; //递归结束条件
for (int i=0; i<2*(5-n); i++) { //每行的空格数规律
System.out.print(" ");
}
for (int i=0; i<4*n-1; i++) { //每行的#数的规律
System.out.print("#");
}
System.out.println();
print1(n-1); //递归
}

public static void print2(int n) {
for (int i=0; i<2*(4-n); i++) { //每行的空格数规律
System.out.print(" ");
}
for (int i=0; i<4*n+3; i++) {//每行的#数的规律
System.out.print("#");
}
System.out.println();
if (n==0) return; //递归结束条件
print2(n-1); //递归
}
}
阿伟受教了,感谢感谢
faith.huan 2020-01-29
  • 打赏
  • 举报
回复


package app.base;

import java.util.Arrays;

/**
 * @author faith.huan 2019-11-08 22:06
 */
public class PrintImage {

    // #号
    private static final byte HASH = 35;
    // 空格
    private static final byte SPACE = 32;

    public static void main(String[] args) {
        print(5, 0);
    }

    private static void print(int totalRow, int currentRow) {
        // 总长度
        int totalLength = totalRow * 4 - 1;
        // 左右两侧空格数
        int space = currentRow * 2;
        // #数
        int hash = totalLength - space * 2;
        String spaceStr = repeat(SPACE, space);
        String hashStr = repeat(HASH, hash);
        System.out.println(spaceStr + hashStr + spaceStr);
        if (++currentRow < totalRow) {
            print(totalRow, currentRow);
        }
    }


    private static String repeat(byte b, int count) {
        final byte[] single = new byte[count];
        Arrays.fill(single, b);
        return new String(single);
    }

}


qybao 2020-01-28
  • 打赏
  • 举报
回复
关键是掌握每行每列的规律,总结出一个公式
for example
public class Sample {
public static void main(String[] args) {
print1(5); //以总行数为基准
print2(4); //以行的下标为基准
}

public static void print1(int n) {
if (n==0) return; //递归结束条件
for (int i=0; i<2*(5-n); i++) { //每行的空格数规律
System.out.print(" ");
}
for (int i=0; i<4*n-1; i++) { //每行的#数的规律
System.out.print("#");
}
System.out.println();
print1(n-1); //递归
}

public static void print2(int n) {
for (int i=0; i<2*(4-n); i++) { //每行的空格数规律
System.out.print(" ");
}
for (int i=0; i<4*n+3; i++) {//每行的#数的规律
System.out.print("#");
}
System.out.println();
if (n==0) return; //递归结束条件
print2(n-1); //递归
}
}
bkLion 2020-01-28
  • 打赏
  • 举报
回复
引用 3 楼 心怀啊的回复:
[quote=引用 2 楼 重工黑大帅的回复:]原理是差不多的,感谢您的回复,但这儿想用的是用递归方法实现
难道上边的不是递归打印吗,难道你的意思是一个递归打印一个#[/quote] 是递归,中文看错了...
心怀啊 2020-01-28
  • 打赏
  • 举报
回复
引用 2 楼 重工黑大帅的回复:
原理是差不多的,感谢您的回复,但这儿想用的是用递归方法实现
难道上边的不是递归打印吗,难道你的意思是一个递归打印一个#
bkLion 2020-01-28
  • 打赏
  • 举报
回复
原理是差不多的,感谢您的回复,但这儿想用的是用递归方法实现
Nonoas 2020-01-28
  • 打赏
  • 举报
回复
void 打印(int 空格数,int 行,int 列){ if(行==0) return; for(空格数次) 打印空格; for(列数次) 打印#: for(空格数次) 打印空格; 打印(空格数++,行--,列--); }

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧