近日到某公司面試,其中有道面試題是這樣的:
要求只使用一個for迴圈輸出下面圖形:
----
如果可以使用2個for(即嵌套迴圈的話),那這題就很簡單了。
但只能用一個for,這可把我想得,想到面試都結束了沒想出來。
TMD,肯定是腦子短路了!!!
鬱悶的是,等到第2天重新一想,居然很快就想出來了,使用String對象,可以達成輸出重複字元的效果!!!
代碼貼在下面:
代碼
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));
}
}
}
}
--下面是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 ?>
很簡單的東西,把我給卡住了。
類似的東西還有:如何在for裡面實現不間斷的迴圈?《在for裡面改變for的條件就是了》
----------------------------------------------------------------------
間隙性的知足,以儆效尤!!!