递归方法

时间:2012-01-13 11:22:20

标签: java recursion

我有一个可以包含组件或复合的数组列表,并且每个组件或组合都有一个我想获得值的税字段。此方法的目的是获得所有组件和组合的应税总额在数组列表中。组件也可以包含复合。问题是当组件包含复合时,我的方法没有得到复合中的值

ArrayList allprinceSubjects = new ArrayList();
public double calculateTaxDueByComponents(){
    double totaltaxdue=0;
    Iterator iterator = vassalsanddukes.iterator();
    while(iterator.hasNext()){
        RiruritaniaSubjects vassalandduke=(RiruritaniaSubjects) iterator.next();
        totaltaxdue+=vassalandduke.getTaxDue();
        vassalandduke.calculateTaxDueByComponents();


    }
    return totaltaxdue;
}

4 个答案:

答案 0 :(得分:7)

问题在于,当您递归调用calculateTaxDueByComponents()时,您会丢弃结果:

vassalandduke.calculateTaxDueByComponents();

将其更改为

totaltaxdue += vassalandduke.calculateTaxDueByComponents();

答案 1 :(得分:3)

不确定您的业务逻辑是如何实现的,但我认为以下行需要更改:

vassalandduke.calculateTaxDueByComponents();

将其更改为:

totaltaxdue += vassalandduke.calculateTaxDueByComponents();

答案 2 :(得分:1)

您没有将vassalandduke.calculateTaxDueByComponents();的值分配给任何内容 - 您最有可能将其添加到totaltaxdue,而不是这样吗?

答案 3 :(得分:0)

将方法的返回值存储在totaltaxdue中,如下所示。

totaltaxdue += vassalandduke.calculateTaxDueByComponents();