我最近在树实现方面做了很多工作,以及我们如何表示和理解树.我的重点是将数学表达式转换为二叉树,我设置了以线性形式表示树的问题,如字符串或数组,同时仍保留有关树及其子树的重要信息. 因此,我已经为二进制表达式树开发了一个非常简单的编码.然而,我在一个递归庄园中有效地实现它有一些问题,它似乎是概念背后的一个失败方面. 如果节点作为左子节点存在,则编码很简单如果它作为右子节点被赋予0,则给出1的映射.这种简单的编码允许我...
我之前做了一些研究并找到了一些很棒的文章,但我似乎无法根据我给出的问题定制任何解决方案.从完成的研究中,我认为解决这个问题的最佳方法是使用递归.我已经使用一些泛型类做了一个例子,但基本上我的问题是我在列表中有大约10个类.我可能只有这些课程中的一个,我可能有十个.对于给定的问题,我最终找到了“项目”(所有这些都继承自项目)的最佳组合.我认为这很容易,除非我必须在每次测试之前处理创建组合. 下面是一些仅使用两个类的示...
我在DotLiquid中有这个循环:{% for page in Page -%}{{ page.Title }}<ul>{% for subpage in page.Pages -%}<li>{{ subpage.Title }}</li><!-- subpage.Pages has more pages and so on... -->{% endfor -%}</ul> {% endfor -%}每个子页面对象都有一个Pages属性,列表中包含其他子页面(如第一个Page对象). 如何在这些子页面上编写递归迭代来创建完整的树?解决方法:将代码移动到单独的文件中,并使用include标记. This相关问题包括一...
我试图使用递归来计算一些问题集,但每次我的返回值为1. 这是我的功能static int numberOfCoins(int n, int counter) {if (n >= 25){counter++;numberOfCoins(n - 25,counter);}else if (n >= 10){counter++;numberOfCoins(n - 10,counter);}else if (n >= 5){counter++;numberOfCoins(n - 5, counter);}else if (n > 0){counter++;numberOfCoins(n - 1, counter);}return counter; }这是我的电话int returnValue = numberOfCoins(3...
给定一个对象public class Thing { public Thing() { this.children = new List<Thing>();}public int Id {get; set;} public string Name {get; set;} public List<Thing> children{ get; set;}public string ToString(int level = 0){//Level is added purely to add a visual hierarchyvar sb = new StringBuilder();sb.Append(new String('-',level));sb.AppendLine($"id:{Id} Name:{Name}"); foreach(va...
简单来说,我希望项目中的所有命名空间都是递归的,并且前面找到的所有命名空间中都有类.var namespaces = assembly.GetTypes().Select(ns => ns.Namespace);我之前使用这部分来获取字符串格式的命名空间.但现在我也了解了底层名称空间.解决方法:听起来你可能想要从命名空间到类的Lookup:var lookup = assembly.GetTypes().ToLookup(t => t.Namespace);或者(也可以非常相似)你可以使用GroupBy:var groups = assembly.GetTypes().Gr...
我是序列化的新手,甚至是protobuf的新手.这是我的问题,我有这些课程:[ProtoContract] class Controle {[ProtoMember(1, AsReference=true)]public HashSet<Controle> ControlesInternes { get; set; }[ProtoMember(2)]public string TypeControle { get; set; }[ProtoMember(3)]public Dictionary<string, string> Attributs { get; set; }[ProtoMember(4)]public int Ligne { get; set; }[ProtoMember(5)]public string InnerTex...
我可以使用递归方法的out参数吗?如果可能,我如何使用以下代码执行此操作?private void PrepareDir(out List<_File> listFiles,string root,string dirPath) {DirectoryInfo dirRoot = new DirectoryInfo(dirPath);FileInfo [] Files = dirRoot.GetFiles();dirPath = dirPath.Substring(root.Length);foreach (FileInfo file in Files) {_File _file = new _File();_file.Name = dirPath + "\\" + file.Name;_file.Path = file.Fu...
我正在编写一个遍历以找到道路中最长的路径.这段代码的神奇部分是segment.Next指的是LINQ,它具有应用于它的特定逻辑,就像不重新访问已访问过的节点一样.因此,不要指出travsel中的缺陷超出范围. 我想要做的是减少堆栈上的调用次数,因为有时路径可能是5000长.我知道我必须使这个递归调用尾递归.public static IEnumerable<Segment> FindLongestPath(Segment segment) {var rv = new List<Segment> {segment};var longestPathLength =...
我需要在复杂的图形结构中找到一条或多条路径.该图使用类似于此的内容构建:class Node {public string Value { get; set;}public List<Node> Nodes { get; set;}public Node(){Nodes = new List<Node>();} }使这种复杂化的原因是节点可以引用回早期节点.例如,A -> C -> E -> A我需要做的是获取表示通过节点的路径的堆栈列表,直到我到达具有特定值的节点.由于可能存在一些非常大的路径,我们可以尝试使用最大节点.List<Stack<Node>>...
我尝试序列化对象图(不是很深)时遇到异常.有意义的部分是这样的:[ERROR] FATAL UNHANDLED EXCEPTION: ProtoBuf.ProtoException: Possiblerecursion d etected (offset: 5 level(s)): red atProtoBuf.ProtoWriter.CheckRecursionStackAndPush (object) <0x00127> atProtoBuf.ProtoWriter.StartSubItem (object,ProtoBuf.ProtoWriter,bool)<0x0002f>该图表示文件/目录结构,我的模型(简化)如下所示:[ProtoContract] [ProtoInclude(...
我有一个递归数据结构,如链表:class Node {private Node next;private int data;// (...)public Node Next{get{return next;}}public int Data{get{return data;}} }我想创建一个LINQ查询,它从列表的头部开始,然后遍历元素,即时收集数据.怎么做?解决方法:只用简单的LINQ查询就很难遍历任意复杂的数据结构.在某些时候,你必须“减少你的损失”并自己编写迭代器块 – 可能只针对那些难以用标准LINQ表达的部分. 也就是说,对于您的链表...
我正在使用C#进行ConfigurationSection.我决定使用nameof(PropertyName)而不是硬编码字符串来利用一些C#6功能. 但是,我从Resharper得到一个关于递归调用的奇怪结果. 这是一个例子:我可以看出它为什么会发出这个警告,因为该属性本身就被引用了.但我不相信这实际上是递归的. 这次电话有什么我需要担心的吗?解决方法:除非这个[string]调用CoreApiRootUrl,否则它不是递归的. 你是对的,(……)的名字实际上根本不打电话. 我刚刚验证了我...
public bool CopyOldLabFilesToNewLab(string sourcePath, string savePath) { if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); }#region try { string[] labDirs = Directory.GetDirectories(sourcePath);//目录 string[] labFiles = Directory.GetFiles(sourcePath);//文件 ...
我有一个表单MainForm,它是一个包含许多子控件的Windows窗体表单.我想在MainForm上调用一个通知其所有子节点的函数. Windows窗体表单是否提供了执行此操作的方法?我玩更新,刷新和无效,但没有成功.解决方法: foreach (Control ctrl in this.Controls) {// call whatever you want on ctrl }如果要访问表单上的所有控件,以及表单上每个控件的所有控件(依此类推,递归),请使用如下函数:public void DoSomething(Control.ControlColle...