用于计算层次结构时间的递归函数

时间:2014-04-02 08:30:49

标签: c# recursion foreach

我遇到了用于计算层次结构时间的递归函数的问题。层次结构中的每个项目都有其下属列表,我想要做的是在调用函数时获取下面所有步骤的时间总和。问题是我有一个时间驱动器,时间应该乘以。比如说,层次结构中的最后一步有时间驱动程序2,上面的步骤是时间驱动程序4,从底部开始的第三步应该得到4个步骤的时间,其中每个步骤包含第一步中的2个步。希望你明白这一点。

    public double getIdealTime(double sum, bool first)
    {
        if (first)
        {
            sum += this.idealTime;
            first = false;
        }

        else
        {
            sum += this.idealTime * this.timeDriverNumber;

        }


        foreach (var prodel in this.subordinates)
        {
            sum = prodel.getIdealTime(sum, first);

        }

        return sum;
    }

“first”true和false只是一个解决方案,无法获得实际步骤的所有步骤(时间x时间驱动程序)的时间,但仅适用于该实例中的一个。

问题是该功能没有给我正确的输出值。我不确定为什么,但感觉功能是“从上到下”而不是“从下到上”。也就是说,由于通常只设置最后一个项目的时间,然后使用下属及其下属计算时间,因此它不会与任何其他时间驱动器相乘而不是最后一个。

一个例子:

Step 1
  step 2 time driver 8
    Step 2.1 = 3s time driver 4
    Step 2.2 = 4s time driver 3

步骤1应该生成(4 * 3 + 3 * 4)* 8 = 192秒但是给我24秒,因为它不会与步骤2的时间驱动器8相乘。步骤2给我24秒,因为它应该自它应该只给我一个步骤2的时间。

编辑:我试图找出一个有效的例子但是我无法简化代码来构建足够的代码以获得我可以在这里发布的内容。我仍然非常感谢你的帮助!

0 个答案:

没有答案