C# 如何在C中递归返回所有参数输入#

C# 如何在C中递归返回所有参数输入#,c#,recursion,C#,Recursion,我是C#新手,一直在测试如何让经典的Hello World更具活力。到目前为止,我已经将其设置为测试是否存在args输入,但我只能让它返回第一个,而无需硬编码args[1]-args[x]。我试着胡乱考虑使用元组的想法,但我显然不确定 static void Main(字符串[]args) { 如果(args.Length>0) { WriteLine($“Sup,{args[0]}”); } 其他的 { Console.WriteLine($“Hello World”); } } 一个非常简单

我是C#新手,一直在测试如何让经典的Hello World更具活力。到目前为止,我已经将其设置为测试是否存在args输入,但我只能让它返回第一个,而无需硬编码args[1]-args[x]。我试着胡乱考虑使用元组的想法,但我显然不确定

static void Main(字符串[]args)
{
如果(args.Length>0)
{
WriteLine($“Sup,{args[0]}”);
}
其他的
{
Console.WriteLine($“Hello World”);
}
}

一个非常简单的解决方案是:

Console.WriteLine($"Sup, " + string.Join(", ", args));
这个

使用每个成员之间指定的分隔符连接对象数组的字符串表示形式


一个非常简单的解决方案是使用以下方法:

Console.WriteLine($"Sup, " + string.Join(", ", args));
这个

使用每个成员之间指定的分隔符连接对象数组的字符串表示形式


递归调用
Main
很好——除了在启动时调用它之外,它没有什么特别之处

static void Main(string[] args)
{
    if(args.Length == 0)
    {
        Console.WriteLine($"Hello World");
        return;
    }

    Console.WriteLine($"Sup, {args[0]}");

    if (args.Length > 1)
    {
        // recursively call Main with the remaining args, note that recursive 
        // call will not hit "Hello world" case as the tail always has at least one element
        Main(args.Skip(1).ToArray());
    }
}

请注意,由于它创建了多个数组,所以效率非常低,将索引传递到起始位置可能是一个选项,但它会更改
Main
的签名,因此需要另外一个函数。如果您只想访问参数
String.Join
,如其他答案或
for(int i=0;i所示,递归调用
Main
是完全正确的-除了在启动时调用它之外,它没有什么特别之处

static void Main(string[] args)
{
    if(args.Length == 0)
    {
        Console.WriteLine($"Hello World");
        return;
    }

    Console.WriteLine($"Sup, {args[0]}");

    if (args.Length > 1)
    {
        // recursively call Main with the remaining args, note that recursive 
        // call will not hit "Hello world" case as the tail always has at least one element
        Main(args.Skip(1).ToArray());
    }
}

请注意,由于它创建了多个数组,所以效率非常低,将索引从何处开始可能是一个选项,但它会更改
Main
的签名,因此将需要另外一个函数。如果您只想访问参数
String.Join
,如其他答案或
中所示(int i=0;iI不认为读取所有传入的参数都需要递归。一个
foreach
循环应该可以做到这一点…
foreach(args中的字符串arg){…}
.MSDN您误解了Recursive这个词的含义您的要求是什么,您将如何使用这些参数?这完全取决于情况,在不了解更多信息的情况下,我们无法提供帮助满足您的要求的答案。目前问题缺乏这些细节和清晰性。@zaggler我认为OP显然希望访问recur中的所有参数有说服力的方式。如果OP来自函数式编程背景,这是一种相当标准的方法-因此我不认为这是一个真正不清楚的问题。没有必要非常实用,但我们都在某个时候开始学习递归,使用
Main
也没有什么错。我想我不清楚我的方向。我认为recursion是必要的(但可能仍然是错误的),因为我希望能够在编写一个q-to-end程序行之前输入名称,该程序行向中间添加了“and”的所有名称打招呼。显然,我可以硬编码一个“and”,在每个名称后打印,但最终名称也会有“and”继续它,这就是为什么我认为我需要一个递归调用,我不认为读取所有传入的参数都需要递归
.MSDN您误解了Recursive这个词的含义您的要求是什么,您将如何使用这些参数?这完全取决于情况,在不了解更多信息的情况下,我们无法提供帮助满足您的要求的答案。目前问题缺乏这些细节和清晰性。@zaggler我认为OP显然希望访问recur中的所有参数有说服力的方式。如果OP来自函数式编程背景,这是一种相当标准的方法-因此我不认为这是一个真正不清楚的问题。没有必要非常实用,但我们都在某个时候开始学习递归,使用
Main
也没有什么错。我想我不清楚我的方向。我认为recursion是必要的(但可能仍然是错误的),因为我希望能够在编写一个q-to-end程序行之前输入名称,该程序行向中间添加了“and”的所有名称打招呼。显然,我可以硬编码一个“and”,在每个名称后打印,但最终名称也会有“and”这就是为什么我认为我需要一个递归调用