近日到某公司面试,其中有道面试题是这样的:
要求只使用一个for循环输出下面图形:
----
如果可以使用2个for(即嵌套循环的话),那这题就很简单了。
但只能用一个for,这可把我想得,想到面试都结束了没想出来。
TMD,肯定是脑子短路了!!!
郁闷的是,等到第2天重新一想,居然很快就想出来了,使用String对象,可以达成输出重复字符的效果!!!
代码贴在下面:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
using
System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main( string [] args)
{
Render( 19 );
Console.Read();
}
static void Render( int rowNum)
{
if (rowNum <= 0 || ! System.Text.RegularExpressions.Regex.IsMatch(rowNum.ToString(), @" ^\d+$ " ))
return ;
int tmpRow = 0 ;
for ( int i = 1 ; i <= rowNum; i ++ )
{
// 对称输出
tmpRow = i <= rowNum / 2 ? i : rowNum - i + 1 ;
Console.WriteLine( " {0} " , new string ( ' * ' , 2 * tmpRow - 1 ));
}
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main( string [] args)
{
Render( 19 );
Console.Read();
}
static void Render( int rowNum)
{
if (rowNum <= 0 || ! System.Text.RegularExpressions.Regex.IsMatch(rowNum.ToString(), @" ^\d+$ " ))
return ;
int tmpRow = 0 ;
for ( int i = 1 ; i <= rowNum; i ++ )
{
// 对称输出
tmpRow = i <= rowNum / 2 ? i : rowNum - i + 1 ;
Console.WriteLine( " {0} " , new string ( ' * ' , 2 * tmpRow - 1 ));
}
}
}
}
--下面是php版本
1
<?
php
2 // phpinfo();
3 function Dis( $num )
4 {
5 if ( $num <= 0 )
6 return ;
7 $tmpRow = 0 ;
8 for ( $i = 1 ; $i <= $num ; $i ++ )
9 {
10 $tmpRow = $i <= $num / 2 ? $i : $num - $i + 1 ;
11 echo str_repeat ( ' * ' , 2 * $tmpRow - 1 ) . ' <br /> ' ;
12 }
13 }
14
15 Dis( 19 );
16 ?>
2 // phpinfo();
3 function Dis( $num )
4 {
5 if ( $num <= 0 )
6 return ;
7 $tmpRow = 0 ;
8 for ( $i = 1 ; $i <= $num ; $i ++ )
9 {
10 $tmpRow = $i <= $num / 2 ? $i : $num - $i + 1 ;
11 echo str_repeat ( ' * ' , 2 * $tmpRow - 1 ) . ' <br /> ' ;
12 }
13 }
14
15 Dis( 19 );
16 ?>
很简单的东西,把我给卡住了。
类似的东西还有:如何在for里面实现不间断的循环?《在for里面改变for的条件就是了》
----------------------------------------------------------------------
间隙性的知足,以儆效尤!!!