标签: recursion

以递归方式搜索目录中的文件

我有以下代码通过目录递归搜索文件,该目录返回所有xml文件的列表给我.一切正常,但根目录中的xml文件不包含在列表中.

我理解为什么,因为它首先做的是获取根目录中的目录,然后获取文件,从而错过了根目录上的GetFiles()调用.我尝试在foreach之前包含GetFiles()调用,但结果并不像我预期的那样.

public static ArrayList DirSearch(string sDir)
{
    try
    {
        foreach (string d in Directory.GetDirectories(sDir))
        {
            foreach (string f in Directory.GetFiles(d, "*.xml"))
            {
                string extension = Path.GetExtension(f);
                if (extension != null && (extension.Equals(".xml")))
                {
                fileList.Add(f);
                }
            }
            DirSearch(d);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    return fileList;
}
Run Code Online (Sandbox Code Playgroud)

我的目录结构类似于:

RootDirectory
        test1.0.xml
            test1.1.xml
            test1.2.xml
  2ndLevDir
            test2.0.xml
            test2.1.xml
  3rdLevDir
               test3.0.xml
               test3.1.xml
Run Code Online (Sandbox Code Playgroud)

代码返回:

test2.0.xml
test2.1.xml
test3.0.xml
test3.1.xml
Run Code Online (Sandbox Code Playgroud)

我想返回每个文件,包括:

test1.0.xml
test1.1.xml
test1.2.xml
Run Code Online (Sandbox Code Playgroud)

不太适用于递归.任何指针都将非常感激.

c# recursion

57
推荐指数
2
解决办法
13万
查看次数

什么时候使用递归互斥?

我理解递归互斥锁允许互斥锁被锁定不止一次而不会陷入死锁,应该解锁相同的次数.但是在什么特定情况下你需要使用递归互斥体?我在寻找设计/代码级别的情况.

c++ recursion multithreading mutex recursive-mutex

56
推荐指数
4
解决办法
5万
查看次数

如何在Linux上递归列出C中的目录?

我需要递归列出C编程中的所有目录和文件.我已经研究过FTW但是我没有使用这两种操作系统(Fedora和Minix).从过去几个小时里读到的所有不同的东西开始,我开始感到头疼.

如果有人知道我可以看到的代码片段那将是惊人的,或者如果有人能给我一个好的方向,我会非常感激.

c linux recursion

56
推荐指数
5
解决办法
8万
查看次数

C++是否限制了递归深度?

在Python中,有一个最大的递归深度.似乎这是因为Python是一个解释器,而不是编译器.C++有相同的概念吗?或者它只与RAM限制连接?

c++ recursion limit

55
推荐指数
3
解决办法
4万
查看次数

55
推荐指数
5
解决办法
2万
查看次数

在javascript中递归建立一个promise链 - 内存考虑因素

在这个答案中,一个承诺链是递归建立的.

稍微简化,我们有:

function foo() {
    function doo() {
        // always return a promise
        if (/* more to do */) {
            return doSomethingAsync().then(doo);
        } else {
            return Promise.resolve();
        }
    }
    return doo(); // returns a promise
}
Run Code Online (Sandbox Code Playgroud)

据推测,这会产生一个调用堆栈和一个承诺链 - 即"深"和"宽".

我预计内存峰值会大于执行递归或单独建立一个promise链.

  • 是这样吗?
  • 有没有人考虑过以这种方式建立连锁店的记忆问题?
  • 承诺库之间的内存消耗会有所不同吗?

javascript recursion promise

55
推荐指数
3
解决办法
1万
查看次数

在HtmlHelper的扩展方法中从传递的lambda表达式获取属性值的最简单方法是什么?

我正在为HtmlHelper编写一个脏的小扩展方法,以便我可以说HtmlHelper.WysiwygFor(lambda)之类的内容并显示CKEditor.

我现在有这个工作,但它似乎比我想要的更麻烦.我希望有更直接的方式来做到这一点.

这是我到目前为止所拥有的.

public static MvcHtmlString WysiwygFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
    return MvcHtmlString.Create(string.Concat("<textarea class=\"ckeditor\" cols=\"80\" id=\"",
                                        expression.MemberName(), "\" name=\"editor1\" rows=\"10\">", 
                                        GetValue(helper, expression),
                                        "</textarea>"));
}

private static string GetValue<TModel, TProperty>(HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
    MemberExpression body = (MemberExpression)expression.Body;
    string propertyName = body.Member.Name;
    TModel model = helper.ViewData.Model;
    string value = typeof(TModel).GetProperty(propertyName).GetValue(model, null).ToString();
    return value;
}

private static string MemberName<T, V>(this Expression<Func<T, V>> expression)
{
    var memberExpression = expression.Body as MemberExpression;
    if (memberExpression == null)
            throw new InvalidOperationException("Expression must …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc recursion lambda extension-methods html-helper

54
推荐指数
4
解决办法
3万
查看次数

使用Java 8实现递归lambda函数

Java 8引入了lambda函数,我想实现像factorial这样的东西:

 IntToDoubleFunction fact = x -> x == 0 ? 1 : x * fact.applyAsDouble(x-1);
Run Code Online (Sandbox Code Playgroud)

编译返回

  error: variable fact might not have been initialized
Run Code Online (Sandbox Code Playgroud)

我怎样才能参考功能本身.类是匿名的但是实例存在:它被调用fact.

java recursion lambda java-8

54
推荐指数
6
解决办法
3万
查看次数

C#中的匿名方法可以自行调用吗?

我有以下代码:

class myClass
{
private delegate string myDelegate(Object bj);

protected void method()
   {
   myDelegate build = delegate(Object bj)
                {
                    var letters= string.Empty;
                    if (someCondition)
                        return build(some_obj); //This line seems to choke the compiler
                    else string.Empty;

                };
   ......
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以在C#中设置匿名方法,以便它可以调用自己?

c# recursion anonymous-methods

53
推荐指数
4
解决办法
2万
查看次数

DataAnnotations:递归验证整个对象图

我有一个带有DataAnnotation属性的对象图,其中对象的某些属性是本身具有验证属性的类,依此类推.

在以下场景中:

public class Employee
{
    [Required]
    public string Name { get; set; }

    [Required]
    public Address Address { get; set; }
}

public class Address
{
    [Required]
    public string Line1 { get; set; }

    public string Line2 { get; set; }

    [Required]
    public string Town { get; set; }

    [Required]
    public string PostalCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试来验证Employee的Address与没有价值PostalCode,那么我想(和期望)例外,但我得到没有.我是这样做的:

var employee = new Employee
{
    Name = "Neil Barnwell",
    Address = new Address …
Run Code Online (Sandbox Code Playgroud)

.net c# validation recursion data-annotations

52
推荐指数
2
解决办法
2万
查看次数