• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
taylor_swift
博客园    首页    新随笔    联系   管理    订阅  订阅
打印十字图 JAVA 递归实现

这个是我自己想的,头疼了一个下午,不过还好。做出来了。在网上找这道题但没有找到用递归的做法。

/*递归思想实现
*
标题:打印十字图

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)

$$$$$$$$$$$$$
$ $
$$$ $$$$$$$$$ $$$
$ $ $ $
$ $$$ $$$$$ $$$ $
$ $ $ $ $ $
$ $ $$$ $ $$$ $ $
$ $ $ $ $ $ $
$ $ $ $$$$$ $ $ $
$ $ $ $ $ $ $
$ $ $$$ $ $$$ $ $
$ $ $ $ $ $
$ $$$ $$$$$ $$$ $
$ $ $ $
$$$ $$$$$$$$$ $$$
$ $
$$$$$$$$$$$$$


对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。

输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数

输出:
对应包围层数的该标志。

例如:
用户输入:
1
程序应该输出:
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..

再例如:
用户输入:
3
程序应该输出:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

请仔细观察样例,尤其要注意句点的数量和输出位置。


资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗 < 1000ms


请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
*
* */
/*思路分析
* 1. 如何在5X5的格子里实现打印十字架
* 2. 如何在7x7的格子里打印十字架
* 3. 在指定nxn的格子里打印十字架。每次横竖各减少两个格子。递归出口是当n=5
* */

 

/*
* num 控制每次更改二维数组中的产生num长宽的十字架的 (当是1的时候是9)
* count 控制更改的初始位置 count=0,1,2时初始位置发生改变 count的最大值=(num-5)/2
* String[][]arr 传入的数组
* int thechar控制是打印.还是A
* 例如:

/*
* num 控制每次更改二维数组中的产生num长宽的十字架的 (当是1的时候是9)
* count 控制更改的初始位置 count=0,1,2时初始位置发生改变 count的最大值=(num-5)/2
* String[][]arr 传入的数组
* int thechar控制是打印.还是A
* 例如:

* */

这次就这样啦!

递归原理图 

改动输出内容

 

 

posted on 2018-01-03 23:59  taylor_swift  阅读(1043)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3