遇到一个工作中的问题

本帖于 2013-03-06 15:23:23 时间, 由普通用户 胡问之 编辑

上来聊几句,也不是不得了,就是有点郁闷,有兴趣的职友请帮我理理头绪。

要给公司现有系统做一个improvement,大概是这样的,假如一个树结构,每个结点有个checkbox,有的checked,有的unchecked,如果对树的某个结点做一个操作,那么这个结点的下层children中如果这个checkbox是checked,那么也要实施这个操作,如此类推到最下层。这个问题不难,我写个递归程序就解决了,问题是负责这块的一个老头同事不同意用递归,说将来不好维护,我就换了个方式,写了个最 短小的method,用C#的yield return把需要进行操作的所有checked结点先找出来,然后再做这个操作,但测试时发现不行,因为这个操作有赖于上一层的结果,必须先做父结点,取得一个ID,然后才能做下一层结点,而yield return的结果是个没有顺序的集合,不能保证先做哪个后做哪个。我跟老头谈了这个问题,,希望能回到递归上来,但老头很固执,坚持不用递归,说总可以找到别的办法,真是头大。这个树结构是没有规定深度的,不用递归就得按最大深度的可能性就是每个结点只有一个CHILD这样的深度来循环检查,几十行的程序变成了几百行,还不知道能不能做出来。

我现在应该怎么办呢?老头好象很难说服,坚持用递归怕得罪了他,而这样下去,以后是不是都得按他的意思来?

所有跟帖: 

用堆栈 - 编译器就是这样实现递归的 -wave_forest- 给 wave_forest 发送悄悄话 wave_forest 的博客首页 (18 bytes) () 03/06/2013 postreply 13:57:49

还好老头没说要我用汇编:) -胡问之- 给 胡问之 发送悄悄话 (0 bytes) () 03/06/2013 postreply 14:26:46

有例子吗? -胡问之- 给 胡问之 发送悄悄话 (0 bytes) () 03/06/2013 postreply 14:27:21

树状结构好看,可以GUI用 -怪哉- 给 怪哉 发送悄悄话 怪哉 的博客首页 (57 bytes) () 03/06/2013 postreply 14:03:21

俺经常讲 -怪哉- 给 怪哉 发送悄悄话 怪哉 的博客首页 (101 bytes) () 03/06/2013 postreply 14:16:35

那就再具体讲讲? -胡问之- 给 胡问之 发送悄悄话 (0 bytes) () 03/06/2013 postreply 14:30:50

谢谢几位帅哥,除了技术上的建议 -胡问之- 给 胡问之 发送悄悄话 (117 bytes) () 03/06/2013 postreply 14:14:51

******再来谢谢上面几位的启发, -胡问之- 给 胡问之 发送悄悄话 (77 bytes) () 03/06/2013 postreply 15:31:52

能皆大欢喜就好了 -胡问之- 给 胡问之 发送悄悄话 (133 bytes) () 03/06/2013 postreply 22:40:07

这个真的不能用递归 -村口阿牛- 给 村口阿牛 发送悄悄话 (113 bytes) () 03/06/2013 postreply 18:25:29

阿牛人!没见你再扔炸弹?最近怎个情况? -眼冒金星- 给 眼冒金星 发送悄悄话 眼冒金星 的博客首页 (0 bytes) () 03/06/2013 postreply 21:57:02

还行,该干什么就干什么 -村口阿牛- 给 村口阿牛 发送悄悄话 (0 bytes) () 03/06/2013 postreply 22:04:58

好心态。 -眼冒金星- 给 眼冒金星 发送悄悄话 眼冒金星 的博客首页 (0 bytes) () 03/06/2013 postreply 23:58:48

实际深度不大,测试performance没有问题。 -胡问之- 给 胡问之 发送悄悄话 (128 bytes) () 03/06/2013 postreply 22:24:54

every recursive problem has an iterative :) -神马聊天- 给 神马聊天 发送悄悄话 (0 bytes) () 03/08/2013 postreply 07:50:44

不知我说的对不对 -已婚男人- 给 已婚男人 发送悄悄话 (322 bytes) () 03/09/2013 postreply 21:20:48

请您先登陆,再发跟帖!