C# 如何列出没有嵌套for循环的所有基数n
如前所述 问题是如何生成长度为n的所有可能数字,其中每个数字来自集合{1,2,3,…,n-1}?i、 e如何创建所有的基数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
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自我回答必须符合与任何其他回答相同的质量标准。请参阅我在第一条评论中发布的链接。可能重复的可能重复的