2011-03-25 30 views

回答

3

您可以使用嵌套循环。外部计数上限并打印逗号,内部循环打印空格分隔的连续数字。但你应该能够自己想出这样的解决方案。

这里是曾经幻想,但不可读之一:

String.Join(",", 
    Enumerable.Range(1,10) 
    .Select(i=> String.Join(" ", 
     Enumerable.Range(1,i) 
     .Select(j=>j.ToString())))) 
+2

甚至不需要那么多。一个单一的循环,一个'StringBuilder'并且随时打印。完成。 – 2011-03-25 13:22:28

+1

好主意。但它可能更短,但在概念上更难。 OP看起来像一个初学者。 – CodesInChaos 2011-03-25 13:23:34

+3

如果我们正在回答作业,那么我们也可以尽我们的方式在教授的同时教授和反馈教授。 – 2011-03-25 13:25:04

3

使用嵌套循环。使用外算你要多少数量来算这一关,然后使用内循环,以实际通过的人数每次计数:

for(int i=1; i <= limit; i++) 
{ 
    for(int a=1; a <= i; a++) 
    { 
     Console.Write(a + " "); 
    } 

    Console.Write(", "); 
} 

附: - 如果这是一个家庭作业问题而不是纯粹的好奇心(或更大问题的简化版本),请务必将其标记为这样。答案将给予更多的解释,而不是简单地给你代码。

+1

'a.ToString()+“”'。在这种情况下'a'不会隐式转换。 – 2011-03-25 13:26:14

+1

@Mthethew当然会。 – 2011-03-25 13:38:34

1

一个非常幼稚和快速的解决方案

for(int i=0;i<N;i++) 
{ 
    for (j=0;j<i;j++) 
     Console.Write(j.ToString()+" "); 
    Console.WriteLine(); 
} 
1
for (int i = 1; i < maxNumber; i++) 
{ 
    for (int j = 1; j < i+1; j++) 
    { 
     Console.Write(j); 
     Console.Write(','); 
    } 
    Console.WriteLine(); 
} 
1
int total = 10; 

for (int i = 0; i < total; i++) 
{ 
    for (int j = 1; j <= i; j++) 
    { 
    Debug.WriteLine(j.ToString()); 
    }  
} 
2

天真的解决方案使用嵌套循环。你可以不用嵌套的循环:

var sb = new StringBuilder(); 
int n = 1; 
while (true) { 
    sb.Append(String.Format("{0} ", n)); 
    Console.Write("{0}, ", sb.ToString().TrimEnd()); 
    n++; 
} 
1

我认为这是有趣的尝试,以实现这一目标完全LINQ /法链,但我只能做一半。任何建议,关于如何摆脱递归方法?

string GetNumberString(int n) 
{ 
    if(n==1) 
     return "1"; 
    else 
     return GetNumberString(n-1)+" "+n; 
} 

void Main() 
{ 
    Console.WriteLine(Enumerable.Range(1,10). 
      Select(n => GetNumberString(n)).Aggregate((a, b) => a+", "+b));  
}