Java 递归方法

Java 递归方法,java,recursion,Java,Recursion,我有一个数组列表,其中可能包含组件或组合,每个组件或组合都有一个我想要获取值的税务字段。此方法的目的是获取数组列表中所有组件和组合的应付税款总额。组件也可能包含组合。问题是当组件包含composite,我的方法没有得到composite中的值 ArrayList allprinceSubjects = new ArrayList(); public double calculateTaxDueByComponents(){ double totaltaxdue=0; Iterat

我有一个数组列表,其中可能包含组件或组合,每个组件或组合都有一个我想要获取值的税务字段。此方法的目的是获取数组列表中所有组件和组合的应付税款总额。组件也可能包含组合。问题是当组件包含composite,我的方法没有得到composite中的值

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;
}

问题是,当您递归调用
calculatesaxduebycomponents()
时,会放弃结果:

vassalandduke.calculateTaxDueByComponents();
换成

totaltaxdue += vassalandduke.calculateTaxDueByComponents();

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

vassalandduke.calculateTaxDueByComponents();
将其更改为:

totaltaxdue += vassalandduke.calculateTaxDueByComponents();

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

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


totaltaxdue+=vassalandduke.calculateTaxDueByComponents()

+1调用
vassalandduke.calculateTaxDueByComponents()没有任何意义
在增加了totaltaxdue之后。感谢它解决了我的问题,我将不得不重新学习递归,任何关于最佳学习方法的提示recursion@Jackwelch:您的问题与递归无关,而是与语句的正确排列有关。其他人已经回答了,但是
getTaxDue()
做了什么?似乎将逻辑从
calculatesaxduebycomponents
移动到
getTaxDue
并且只有一个方法更有意义。或者至少从
getTaxDue
中调用
calculatesaxduebycomponents
,这样就不需要每次都显式地完成这两件事。这不是个好主意。这将在每次调用该方法时增加其值。