私は完了することができない脳のお誘いをして座っています。私は特定のフォルダ構造を作成しようとしています。構造はここで説明されます:再帰的なフォルダの作成
指定されたルートフォルダで、アプリケーションは10個のフォルダ、 '0' - '10'を作成する必要があります。これらのそれぞれの中に、再度フォルダ '0'〜 '10'などが必要です。これはユーザー定義のレベルに進む必要があります。
forループの使用は、私がこれまでにこれを取得するために管理しているが、再帰関数は、はるかに少ない乱雑になりますことを想像することができますが、Dを、それを把握しようとしていると同時に、私の脳を溶かす:
static void Main(string[] args)
{
string basePath = Path.Combine(Environment.CurrentDirectory, "Lib");
for (int a = 0; a < 10; a++)
{
CreateFolders(basePath);
basePath = Path.Combine(basePath, a.ToString());
for (int b = 0; b < 10; b++)
{
CreateFolders(basePath);
basePath = Path.Combine(basePath, b.ToString());
for (int c = 0; c < 10; c++)
{
CreateFolders(basePath);
basePath = Path.Combine(basePath, c.ToString());
for (int d = 0; d < 10; d++)
{
CreateFolders(basePath);
basePath = Path.Combine(basePath, d.ToString());
basePath = Helpers.DirMoveBack(basePath);
}
basePath = Helpers.DirMoveBack(basePath);
}
basePath = Helpers.DirMoveBack(basePath);
}
basePath = Helpers.DirMoveBack(basePath);
}
Console.ReadLine();
}
// Creates folders '0' - '9' in the specified path
static void CreateFolders(string path)
{
for (int a = 0; a < 10; a++)
{
Directory.CreateDirectory(string.Format("{0}\\{1}", path, a));
Console.WriteLine(string.Format("{0}\\{1}", path, a));
}
}
public static class Helpers
{
// Moves the directory back one step
public static string DirMoveBack(string path)
{
for (int a = path.Length - 1; a > 0; a--)
if (path[a] == '\\')
return path.Substring(0, a);
return path;
}
}
ご覧のとおり、これはかなり面倒です。コードを実行すると、目的のフォルダ構造が作成されますが、再帰的に実行する必要があります。私の考え方を広げようとしている私は、本当の脳のお誘いのようです。すべてのヘルプは大幅に
私はそれを実現することができますが、0-10はない10 11個のフォルダ、作る:それは唯一の第九のフォルダが作成されますので、条件は<10である – evanmcdonnal
Oで、またはあなたが再帰について話していますか?私はiterationが理想的かもしれないと知っていますが、再帰を使って動作するように思えます。そして、0から0→0→(0→9) (0 - > 9)、ステップ1を戻って、私が思うルートの9番目のフォルダに戻るまで?私はちょうどそれがうまくいく方法について興味があります:) –