在 C# 中使用递归为一组变量赋值?

Posted

技术标签:

【中文标题】在 C# 中使用递归为一组变量赋值?【英文标题】:Assign values to a group of variables using recursion in C#? 【发布时间】:2011-07-13 00:54:54 【问题描述】:

如何

我可以通过一个简单的过程轻松做到这一点,但我不知道如何使用递归来做到这一点。

public void Assign()

Console.Write("Name: ");
Name = Console.ReadLine();

Console.Write("e-mail: ");
Email = Console.ReadLine();

Console.Write("Phone Number: ");
Phone = int.Parse(Console.ReadLine());

感谢您的帮助。

【问题讨论】:

我没有关注这个问题...为什么要为此使用递归? 如果这是一个家庭作业,请相应地标记它并阅读如何发布家庭作业问题:***.com/tags/homework/info 这不是递归操作。为此使用递归是对递归的不良使用。如果这是家庭作业,自然你“必须”做作业。但要明白,这样的作业并没有教给你任何东西...... @stefan:它可能会隐约教会他如何使用它。它不会教他何时为什么使用它。我可以通过将木螺钉敲入混凝土来向某人展示如何使用锤子,但这并不能真正教会他们任何东西。 @David 好吧,作为木匠,您不必能够设计房子就能掌握锤子。但如果有人让你用锤子敲钉子,你应该可以做到。 【参考方案1】:

如果您要使用递归,您必须拥有某种足以完成您将在函数中执行的任何工作的本地上下文,并且您必须知道何时/何地停止(并开始弹出堆栈)。

您的示例看起来像(如果有的话)一个循环。

【讨论】:

【参考方案2】:

你的问题看起来像家庭作业,因为教科书通常使用这种可怕的问题来教授递归。

namespace Homework

    class Recursion
    
        static string[] nameList = new string[5];
        static void Main(string[] args)
        
            AssignNames(0);
            Console.WriteLine("The names are:");
            foreach(string name in nameList)
            
                Console.WriteLine(name);
            
            Console.ReadKey();

        

        static void AssignNames(int index)
        
            if (index == nameList.Length) return;
            Console.Write("Enter name #0: ", index + 1);
            nameList[index] = Console.ReadLine();
            AssignNames(index + 1);
        
    

【讨论】:

以上是关于在 C# 中使用递归为一组变量赋值?的主要内容,如果未能解决你的问题,请参考以下文章

C# 类声明一个数组字段,无法赋值,说变量在声明前无法使用

php里list函数

在 C# 的扩展方法中为调用者变量赋值

C#学习中遇到的问题: 判断泛型变量是否未赋值(未解决)

C#学习中遇到的问题: 判断泛型变量是否未赋值(未解决)

为啥不应该在函数式编程中使用变量赋值