Java 递归方法
我有一个数组列表,其中可能包含组件或组合,每个组件或组合都有一个我想要获取值的税务字段。此方法的目的是获取数组列表中所有组件和组合的应付税款总额。组件也可能包含组合。问题是当组件包含composite,我的方法没有得到composite中的值Java 递归方法,java,recursion,Java,Recursion,我有一个数组列表,其中可能包含组件或组合,每个组件或组合都有一个我想要获取值的税务字段。此方法的目的是获取数组列表中所有组件和组合的应付税款总额。组件也可能包含组合。问题是当组件包含composite,我的方法没有得到composite中的值 ArrayList allprinceSubjects = new ArrayList(); public double calculateTaxDueByComponents(){ double totaltaxdue=0; Iterat
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
,这样就不需要每次都显式地完成这两件事。这不是个好主意。这将在每次调用该方法时增加其值。