C# 如何列出没有嵌套for循环的所有基数n

C# 如何列出没有嵌套for循环的所有基数n,c#,recursion,C#,Recursion,如前所述 问题是如何生成长度为n的所有可能数字,其中每个数字来自集合{1,2,3,…,n-1}?i、 e如何创建所有的基数n? 一种解决方案是用于循环: int n; int[] myArray = new int[n]; for (int i1 = 1; i1 < n; i1++) myArray[0]=i1; for (int i2 = 1; i2 < n; i2++) myArray[1]=i2; // and so on.... for (in

如前所述 问题是如何生成长度为n的所有可能数字,其中每个数字来自集合{1,2,3,…,n-1}?i、 e如何创建所有的基数n? 一种解决方案是用于循环:

int n;
int[] myArray = new int[n];
for (int i1 = 1; i1 < n; i1++)
myArray[0]=i1;
for (int i2 = 1; i2 < n; i2++)
    myArray[1]=i2;
    // and so on....
        for (int in = 1; in < n; in++)
        {
            myArray[n]=in;
            foreach (var item in myArray)
                Console.Write(item.ToString());
                Console.Write(Environment.NewLine);
        }
intn;
int[]myArray=新的int[n];
for(int i1=1;i1

问题是当n改变时,循环的数量改变了

递归解决方案是:

using System;
namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        new c().f1(3);
        Console.WriteLine("Done!");
        Console.ReadKey();
    }
}
class c
{
    public void f1(int n)
    {
        f(n-1 , n, "");
    }
    public string f(int n,int depth, string r)
    {
        if(depth == 0)
        {
            Console.WriteLine(r);
            return "";
        }
        for (int i = 1; i <= n ; i++)
        {                
            string r1 =  r + i.ToString();
            f(n, depth - 1, r1);
        }
        return "";
    }        
}
}

递归解决方案是:

using System;
namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        new c().f1(3);
        Console.WriteLine("Done!");
        Console.ReadKey();
    }
}
class c
{
    public void f1(int n)
    {
        f(n-1 , n, "");
    }
    public string f(int n,int depth, string r)
    {
        if(depth == 0)
        {
            Console.WriteLine(r);
            return "";
        }
        for (int i = 1; i <= n ; i++)
        {                
            string r1 =  r + i.ToString();
            f(n, depth - 1, r1);
        }
        return "";
    }        
}
}

请添加一些解释,说明此代码为何有助于OP。这将有助于提供未来观众可以从中学习的答案。有关更多信息,请参阅。@MikeMcCaughan非常肯定这一点op@nickzoum自我回答必须符合与任何其他回答相同的质量标准。请参阅我在第一条评论中发布的链接。请添加一些解释,说明此代码为何有助于OP。这将有助于提供一个未来观众可以从中学习的答案。有关更多信息,请参阅。@MikeMcCaughan非常肯定这一点op@nickzoum自我回答必须符合与任何其他回答相同的质量标准。请参阅我在第一条评论中发布的链接。可能重复的可能重复的