Tag: 递归

Windows 7 64位中的递归

我有这个助手类 public static class DateTimeHelper { public static int GetMonthDiffrence(DateTime date1, DateTime date2) { if (date1 > date2) { return getmonthdiffrence(date2, date1); } else { return ((date2.year – date1.year) * 12) + (date2.month – date1.month); } } } 该函数计算两个日期之间的月数,它完全符合我的要求。 到目前为止没有问题。 问题是当我在发布时,Windows 7 64位我总是得到相同的值“0” 当我深入研究这个问题时,我意识到在某些时候,由于递归调用,两个参数是相等的。 我再说一遍,我有这个bug,只有当我在发布时没有附加到调试器和Windows 7 64位上。 任何人都可以对这种竞争有任何想法吗? 如果是这样,我需要一些链接来获取更多细节。 这是IL代码。 (我认为它可以帮助理解更多) .class public auto ansi […]

执行FloodFill的不同方法

好的,我有几种不同的方法来执行FloodFill。 所有这些都会导致问题。 我将列出3种方法并解释每种方法会发生什么。 如果有人能给我一些很棒的指示。 我见过一些类似的post,但没有一个是C#,java或VB.net(我知道的唯一语言)。 对此的给予是我有一个名为PixelData的类,它将一个Color存储在CellColor成员变量中。 我有一个50×50 PixelData对象的数组,称为“像素”。 我也有一个名为CANVAS_SIZE的常量,在这种情况下为50。 以下是我尝试过的三种方法。 这个是递归的。 它非常容易出现堆栈溢出。 我已经尝试设置一个计时器,在此方法完成后启用CanFill成员。 这仍然不能防止溢出: private void FloodFill(Point node, Color targetColor, Color replaceColor) { //perform bounds checking X if ((node.X >= CANVAS_SIZE) || (node.X = CANVAS_SIZE) || (node.Y < 0)) return; //ouside of bounds //check to see if the node is the target color if (pixels[node.X, […]

如何从给定父节点获取所有子节点?

我有一个父/子ID列表,并希望获得给定父ID的所有子ID。 没有空父项(顶级ID不显示为子ID)。 目前,父/子ID在列表中记录为KeyValuePair,但是如果更好的话,可以很容易地将其更改为另一个数据结构: List<KeyValuePair> groups = new List<KeyValuePair>(); groups.Add(new KeyValuePair(parentID, childID)); 例如,以下是示例父/子。 父母27的孩子将是5944,2065,2066,2067,6248,6249,6250 。 Parent Child 27 1888 1888 5943 1888 5944 5943 2064 5943 2065 5943 2066 5943 2067 2064 6248 2064 6249 2064 6250 任何帮助将不胜感激!

LINQ和递归

考虑以下: public class Box { public BoxSize Size { get; set; } public IEnumerable Contents { get; set; } } Box FindBoxBySize(Box box, BoxSize size) { Box _foundBox = null; Action<IEnumerable> _recurse = null; _recurse = new Action<IEnumerable>(boxes => { foreach (var _box in boxes) { if (_box.Size == size) { _foundBox = _box; return; […]

洪水填充递归算法

我正在尝试制作一个可以在c#中填充int数组的算法。 基本上,作为MS Paint中的填充工具,我有一个颜色,如果我在数组中选择(x,y)坐标,它会用新颜色替换所有具有相同初始颜色的邻居。 例如: [0,0,0] [0,1,0] [1,1,0] 如果我将3放入(0,0),则数组变为: [3,3,3] [3,1,3] [1,1,3] 所以我在递归中尝试了它并且确实有效,但并非总是如此。 实际上,我有时会出现“Stack Overflow”错误(似乎合适)。 这是我的代码,如果你能告诉我什么是错的话会很棒:) public int[,] fill(int[,] array, int x, int y, int initialInt, int newInt) { if (array[x, y] == initialInt) { array[x, y] = newInt; if (x 0) array = fill(array, (x – 1), y, initialInt, newInt); if (y 0) array = […]

使用c#递归地构建具有父子关系的树

我有一个列表,我想转换为树结构。 如何将其转换为树形结构? 我通过递归检查父子关系C# thread查看了构建树类型列表,但由于我的类中的键是字符串,我不能使用该解决方案。 请帮忙 internal class Program { private static void Main(string[] args) { List nodeList = new List(); node n = new node(“A”, “A1”, null, 1); nodeList.Add(n); n = new node(“B”, “A2”, “A1”, 2); nodeList.Add(n); n = new node(“C”, “A3”, “A1”, 2); nodeList.Add(n); n = new node(“D”, “A4”, “A1”, 2); nodeList.Add(n); n = […]

获取PropertyInfo的递归例程

我正在尝试创建一个递归例程,它将为指定对象下的所有成员检索PropertyInfos(在.NET 3.5中)。 直接成员的所有东西都在工作,但它也需要解析嵌套类(以及它们的嵌套类等)。 我不明白如何处理解析嵌套类的部分。 你会如何写这部分代码? public class ObjectWalkerEntity { public object Value { get; set; } public PropertyInfo PropertyInfo { get; set; } } public static class ObjectWalker { // This will be the returned object static List objectList = new List(); public static List Walk(object o) { objectList.Clear(); processObject(o); return objectList; } private static […]

Linq扩展方法,如何在集合中查找子递归

我已经熟悉了Linq,但对扩展方法了解甚少,我希望有人可以帮助我。 所以我有这个分层集合伪代码,即: class Product prop name prop type prop id prop List children 我有一个产品列表产品列表。 有没有什么办法可以通过id使用扩展方法在这个集合中查找产品? 换句话说,我需要在层次结构中的某个位置使用一个项目。

在具有子列表的List 中递归读取XML树结构

我有这样的XML: 我有一个属性Name的成员类。 如何使用最新的.NET技术以递归方式将每个单元及其子单元读入多个通用List ,这可以再次具有子List ?

递归调用返回一个List,返回类型导致我的问题

我有一个递归方法,它返回我的类别,并检查其子类别。 所以它看起来像: public List GetAllChildCats(int categoryid) { List list = new List>Category>(); Category c = Get(categoryid); foreach(Category cat in c.ChildCategories) { list.Add( GetAllChildCats(cat.CategoryID) ) } } 这失败了,因为对list.add的调用需要一个Category对象,但它又返回另一个List,我应该如何解决这个问题呢?