Tag: recursion

如何使用yield return和recursion获取每个字母组合?

我有几个字符串列表,从几十个可能的列表: 1: { “A”, “B”, “C” } 2: { “1”, “2”, “3” } 3: { “D”, “E”, “F” } 这三个仅作为示例选择,并且用户可以从具有不同数量的元素的数十个类似列表中进行选择。 再举一个例子,这对用户来说也是一个非常有效的选择: 25: { } // empty 4: { “%”, “!”, “$”, “@” } 16: { “I”, “a”, “b”, “Y” } 8: { “)”, “z”, “!”, “8” } 我想要做的是在保持列表的“顺序”的同时获得每个字符串组合。 换句话说,假设我们正在查看第一个列表,第一个组合将是A1D ,然后是A1E ,然后是A1F ,然后是B1D ,然后是B1E ,依此类推。 到目前为止,我已经编写了这个递归算法: […]

使用EWS查找收件箱文件夹的所有子文件夹

我有以下收件箱文件夹结构: Inbox –ABC —-ABC 2 —-ABC 3 –XYZ —-XYZ 2 –123 —-123 A —-123 B —-123 C 我使用Exchange Web服务和以下代码来查找收件箱文件夹的子文件夹: ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); service.AutodiscoverUrl(“MyName@MyDomain.com”); Mailbox mb = new Mailbox(“MyName@MyDomain.com”); FindFoldersResults findResults = service.FindFolders( WellKnownFolderName.Inbox, new FolderView(int.MaxValue)); foreach (Folder folder in findResults.Folders) { Console.WriteLine(folder.DisplayName); } 这部分有效,因为它返回ABC,XYZ和123文件夹; 不幸的是,它没有返回每个文件夹内的文件夹(ABC 2,ABC 3,XYZ 2,123 A,123 B,123 C)。 此外,文件夹可能在其中包含多个子文件夹级别。 如何编写此代码,以便它将返回所有子文件夹,无论它们的嵌套程度如何?

合并xml文档

我遇到的关于合并XML文档的所有解决方案都达不到我想要的。 让我解释: XML文档1: XML文档2: 进入这样的最终文档: 文档内容相似,但可以具有任意数量的子节点。 我也想消除重复。 我认为重复是具有相同属性的元素(基于属性名称和值)。 有谁见过这个实现的工作示例? 我可以想象如何使用一些循环和一些递归来编写它,但对我来说,这似乎不是实现我想要的最佳方式:) 欢呼并提前谢谢! *编辑* 既然共识是循环和递归是必须的,那么最优雅和有效的方法是什么呢? 我想这个问题的另一个基本问题是在迭代时比较节点的最佳方法是什么?

计数器内部的递归函数

我需要计算在这个递归函数中删除的文件数。 由于它是递归的,我不能使用if语句,而C#不支持全局变量。 任何替代品? static void DirSearch(string path) { try { foreach (string dirPath in Directory.GetDirectories(path)) { foreach (string filePath in Directory.GetFiles(dirPath)) { string filename = Path.GetFileName(filePath); if (filename.Equals(“desktop.txt”)) { File.Delete(filePath); //count++ } Console.WriteLine(filePath); // print files } Console.WriteLine(dirPath); // print directories DirSearch(dirPath); } } catch (System.Exception excpt) { Console.WriteLine(excpt.Message); } }

c#从邻接树中排序数据

我有一堆数据将表示为树。 我正在使用的控件要求正确排序数据。 这是每个节点的结构: public class TreeNode { public Guid id { get; set; } public string name { get; set; } public int level { get; set; } public Guid? parent { get; set; } public bool isLeaf { get; set; } } 我需要一种方法来对数据进行排序,以便我有一个TreeNodes列表,其中首先是root用户,然后是子节点,依此类推。 换句话说,所有直接孩子都需要跟随列表中的父母。 我还想按名称对子节点和叶节点进行排序。 ( > =可扩展, o =叶) root > level1a > […]

Renci SSH.NET:是否可以创建包含不存在的子文件夹的文件夹

我目前正在使用Renci SSH.NET使用SFTP将文件和文件夹上传到Unix服务器,并使用创建目录 sftp.CreateDirectory(“//server/test/test2”); 只要文件夹“test”已经存在,它就能完美运行。 如果没有, CreateDirectory方法将失败,并且每次尝试创建包含多个级别的目录时都会发生这种情况。 是否有一种优雅的方式来递归生成字符串中的所有目录? 我假设CreateDirectory方法自动执行此操作。

对象深度克隆实现

我必须实现generics扩展deepclone方法,该方法可以与任何引用类型实例一起使用以获取其深层副本。 我实现如下 static class ClassCopy { static public T DeepClone (this T instance) { if (instance == null) return null; var type = instance.GetType(); T copy; var flags = BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; var fields = type.GetFields(flags); // If type is serializable – create instance copy using BinaryFormatter if (type.IsSerializable) { using […]

C#:用于尽可能高效地将大量文件放入DVD的代码

我需要编写一个应用程序,它将获取一个文件列表(一些大的,一些小的),并尽可能高效地将它们放到DVD(或CD或其他)上。 本应用的重点是在移动到第二张光盘之前尽可能多地使用第一张光盘,在移动到第三张光盘之前尽可能多地填充第二张光盘,等等。 (注意:应用程序不必对DVD进行实际刻录,只需要找出最合适的效果)。 我最初认为我有一个很好的游戏计划,通过生成文件的排列,然后检查每个组合,看看什么是最合适的。 (我的求助请求可以在这里找到) 但是文件越多,所需的时间就越长……指数级。 所以我希望你对如何最好地实现这一点有一些看法。 有任何想法吗? 而且,一如既往,C#代码总是受到赞赏。

在Spring.Net中向一个递归方法注入建议?

我正在尝试使用Spring.NET对AOP的支持来进行控制/面向方面编程的dependency injection/反转(对于大量的流行语感到抱歉 – 也许我会发布一个单独的问题,要求某人澄清差异:)) 。 具体来说,我希望拦截一个递归方法调用,这样每次调用该方法时,都会调用AOP通知/拦截器。 Spring.Net似乎没有拦截除第一个方法调用之外的任何东西。 我认为 Spring.Net正在为每个实例维护1个截距链,并且在第一个方法调用完成之前不再调用任何拦截器。 有没有人有任何关于获取为每个方法调用触发的拦截器(建议)的信息,包括递归调用? 我可以提供代码/示例输出,如果这有用的话。 谢谢!

如何让这个递归异步/等待问题正确?

我有一个递归方法访问树层次结构中的每个节点并触发每个节点的回调,如(下面的代码未经过测试和示例): void Visit(Node node, Func callback, CancellationToken ct) { if(ct.IsCancellationRequested) { return; } var processedNode = DoSomeProcessing(node); int result = callback(processedNode); // Do something important with the returned int. … // Recursion. foreach(var childNode in node.Children) { Visit(childNode, callback); } } 上面的方法是从传递回调的异步方法调用的。 由于它长时间运行,我将调用包装成Task.Run() : async Task ProcessAsync(Func callback) { var rootNode = await someWebService.GetNodes(); await […]