Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4155
  • 博文数量: 2
  • 博客积分: 90
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-04 20:00
文章分类
文章存档

2010年(2)

我的朋友
最近访客

分类:

2010-05-04 20:20:13

问题描述:
1. n=1时,输出一个字符'x'
x
2. n=2时,在x的左上角,右上角,左下角,右下角分别输出一个x
x x
 x
x x
3. n=2时,在2输入图案的四角分别再输出一个n=2时的图案
x x   x x
 x     x
x x   x x
   x x
    x
   x x
x x   x x
 x     x
x x   x x
4. n=m+1时,在n=m输出的图案基础上,在四个角上分别输出一个n=m输出的图案。
 
PowerShell递归实现代码:
 
 

##计算一个小正方形的空格区域

function get-Blanks($lev)
{
    [string]$blank = ''
    [int]$totalWidth = [Math]::pow(3, $lev-1);
    $blank = $blank.PadRight($totalWidth, ' ');
    $blanks = $blank, $blank, $blank;
    while($totalWidth -gt 3)
    {
        $blanks = $blanks+$blank;
        $totalWidth -= 1;
    }
    
    return $blanks;
}

##计算n=$lev时的图案

function Get-Stars($lev)
{
    if($lev -eq 1)
    {
        $starts1 = 'x'
        return $starts1
    }
    
    if($lev -eq 2)
    {
        $starts2 = 'x x', ' x ', 'x x'
        return $starts2
    }
    
    $sub = Get-Stars ($lev-1)
    $bla = Get-Blanks ($lev-1)    
    $Line1 = Get-Blanks ($lev-1)
    $Line2 = Get-Blanks ($lev-1)
    1..$bla.Length | %{ $Line1[$_-1] = $sub[$_-1]+$bla[$_-1]+$sub[$_-1]; $Line2[$_-1] = $bla[$_-1]+$sub[$_-1]+$bla[$_-1]}
    $starts = $Line1+$Line2+$Line1
    
    return $starts
}

##输出图案:

'n=1'
Get-Stars 1
'n=2'
Get-Stars 2
'n=3'
Get-Stars 3
'n=4'
Get-Stars 4
'n=5'
Get-Stars 5


输出结果:

n=1
x
n=2
x x
 x
x x
n=3
x x   x x
 x     x
x x   x x
   x x
    x
   x x
x x   x x
 x     x
x x   x x

......
阅读(505) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:每日心理学

给主人留下些什么吧!~~

chinaunix网友2011-01-26 12:32:00

高手啊