为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 LINQ / Divide and Conquer 方法以优雅的方式迭代一个循环或无循环

如何使用 LINQ / Divide and Conquer 方法以优雅的方式迭代一个循环或无循环

C#
慕工程0101907 2023-09-16 17:54:32
112123123412345我曾尝试使用 2 个 FOR 循环来实现这一目标,并尝试使用一个循环进行递归。public static void Main(string[] args) {     DisplayNumberPyramid(1); } public static void DisplayNumberPyramid(int i){    if(i<=5)    {        for(int j=1;j<=i;j++)        {            Console.Write(j);        }        Console.Write("\n");        DisplayNumberPyramid(i+1);    }    Console.ReadLine();}使用具有一个循环和不具有循环的 LINQ/DnC 方法,期望获得相同的输出。
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

解决方案


var results = Enumerable.Range(1, 5)

                        .Select(x => string.Concat(Enumerable.Range(1, x)));


foreach(var result in results)

   Console.WriteLine(result);

如果你真的不想要foreach


Console.WriteLine(string.Join("\r\n",results));

或者for 循环


for (var i = 1; i <= 5; i++)

{

   for (var j = 1; j <= i; j++)

      Console.Write(j);

   Console.WriteLine();

}

输出


1

12

123

1234

12345


查看完整回答
反对 回复 2023-09-16
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

使用c#8 的新范围类型功能的另一种解决方案

output = "12345";

for(var i = 1; i <= 5; i++)

  Console.WriteLine(output[0..i]);

或使用子字符串方法


output = "12345";

for(var i = 1; i <= 5; i++)

  Console.WriteLine(output.Substring(0, i));


查看完整回答
反对 回复 2023-09-16
  • 2 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信