如果给定大小,你将如何使用Java递归打印钻石?

大小为5会产生:

***** *****

**** ****

*** ***

** **

* *

* *

** **

*** ***

**** ****

***** *****

我到目前为止的守则

public static void dia(int statSize, int size,int count) {

int statSizeLarge = (statSize*2)+1;

// Params:

// statSize == static size, never change this

// size == variable size, change this

// count == counter

if(size==0) {

System.out.println();

} else {

// is the counter smaller then the size

// if yes, increment and keep printing

if(count

System.out.print("*");

}

// is greater then size?

// if yes, move on, print

// a few more stars

if((count<=statSizeLarge)){

if(countsize)){

System.out.print(" ");

}else if (count>size+1){

System.out.print("*");

} else {}

dia(statSize,size,count+1);

}

// reset count, move to next element

if(count>=statSizeLarge) {

count = 0;

System.out.println();

dia(statSize,size-1,count);

}

} // ends Else

}

输出:

Enter commands:

diamond 3

******

** ****

* ****

* ****

** ****

* ****

* ****

解决方法:

要创建更大的钻石,请选择较小的钻石并添加两个额外的行和列.在下面的diagrom中,为了清晰起见,我用点替换空格.在第二颗钻石中,新添加的字符以粗体显示.

*****.*****

****.**** ****...****

***...*** ***.....***

**.....** **.......**

*.......* *.........*

......... --> ...........

*.......* *.........*

**.....** **.......**

***...*** ***.....***

****.**** ****...****

*****.*****

^^

||

extra columns

您的递归函数应该打印第一行,然后打印一个较小的菱形,中间有两个额外的列,然后是最后一行.

在伪代码中:

void diamond(stars, spaces) {

if (n == 0) {

print(' ' * spaces)

} else {

print('*' * stars, ' ' * spaces, '*' * stars)

diamond(stars - 1, spaces + 2)

print('*' * stars, ' ' * spaces, '*' * stars)

}

}

由于这是一个学习练习,我不会给你完整的Java源代码 – 你可以自己编写它.在这里,您可以看到它在Python中在线运行,这样您就可以看到该算法有效:

标签:java,recursion

来源: https://codeday.me/bug/20190614/1237958.html

java输出钻石_Java:递归打印钻石相关推荐

  1. java输出钻石_Java程序打印钻石形状

    可以通过先打印三角形再打印倒三角形来打印菱形.一个例子如下:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  ...

  2. java输出文件目录_Java实现打印文件路径和展示文件目录

    /** 输入文件或目录,若为文件打印其路径和名字, * 若为目录,可选文件后缀名,若不选,则打印其下所有文件, * 若选择后缀名,则打印其下所有匹配后缀名的文件 * * * mist lee,2014 ...

  3. java输出梯形_java怎么打印等腰梯形

    西兰花伟大炮 var arrorigin = new Array(); arrorigin[0] = [0,0,0,0,1,1,1,0,0,0,0]; arrorigin[1] = [0,0,0,1, ...

  4. java输出字体_Java打印字体拉伸

    我只是让打印机在 java中工作我也需要它,但是我需要解决的最后一个问题.当它打印时,字体的宽度相当拉伸,并且不像它应该的那样清晰和清晰. 这是我的代码我的实际绘图到论文: FontMetrics m ...

  5. java输出二进制数_Java打印整数的二进制表示(代码与解析)

    int a=-99;for(int i=0;i<32;i++){int t=(a & 0x80000000>>>i)>>>(31-i); System ...

  6. java 输出 三角形_Java实现输出三角形

    本来是想实现空心的,想了太久没写出来就算了 代码 package com.qaq.strruct; public class TestDemo01 { //打印三角形 //思路:空格的距离和星星的数量 ...

  7. java输出日志_java代码中如何正确使用loggger日志输出

    java代码中如何正确使用loggger日志输出 发布时间:2019-06-28作者:spider阅读(2980) 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统, ...

  8. java打星星_java初学打印星星以及九九乘法表

    Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i< ...

  9. java输出变量_java输出变量怎么操作?怎么输入变量?

    变量是java中最基础的功能,但同时也是最不可缺少的,有些刚学习java的小伙伴可能还不知道怎么输出输入变量,下面就听小编讲解讲解吧. 变量 1.变量声明数据类型 变量名; 赋值 变量名 = 值; 合 ...

最新文章

  1. QIIME 2教程. 08差异丰度分析gneiss(2020.11)
  2. GNN、RL强势崛起,CNN初现疲态?这是ICLR 2021最全论文主题分析
  3. Tomcat 6.0 日志处理
  4. 2.7 迁移学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. nfs漏洞修复(showmount -e)
  6. 虚拟列表控件---加载大数据行
  7. 【网络编程】一张图了解TCP/IP协议
  8. Spring Boot文档阅读笔记=Caching Data with Spring
  9. mysql 定时统计_PHP+MySQL定时数据统计优化
  10. Vsphere初试——基本安装
  11. 这份Java面试题,阿里P7的正确率都不到50%!!
  12. 的大小name转为小写_linux 进程 -- ps -ef|grep process_name
  13. Rust: tokio,异步代码与运行速度初探
  14. 关于最新版的JCreator只能编译不能运行的问题
  15. 手把手教你如何使用IOMETER测试工具测试存储
  16. 英文PDF怎么翻译成中文?两分钟让你学会翻译PDF
  17. RFT和QTP与AutoIt
  18. 51系列单片机IO模试设置
  19. 测肤API+应用开发,自助打开线上AI测肤
  20. 课堂笔记:逻辑回归和鸢尾花数据集

热门文章

  1. Win7系统CMD进入文件夹目录的命令
  2. 5、乐趣国学—“行有不得,反求诸己。”
  3. js创建数组(js创建数组并填充数据)
  4. 一键清理网站木马文件,从此网站拥有专属保镖 ——阿里云虚拟主机推出木马查杀功能
  5. win10关机后cpu风扇仍一直在转,解决办法
  6. 企业组织发展的利器--麦肯锡7S模型
  7. Android修改音量
  8. linux搭建kk教程,linux版本KK搭建视频教程+文字教程
  9. Android仿微博、人人Feed详情页吸附导航栏
  10. python __all__用法