sum
передается по значению. Если вы хотите имитировать передачу по ссылке, вы можете создать класс-оболочку для целого числа, как показано ниже:
class IntWrapper
{
int n;
}
, и соответственно изменить свой код:
static void testSum(){
Stack<Integer> myStack = new Stack();
myStack.add(3);
myStack.add(4);
myStack.add(6);
System.out.println(calculateSum(myStack, new IntWrapper()));
}
static Integer calculateSum(Stack<Integer> myStack, IntWrapper sum) {
if (!myStack.empty()) {
sum.n = sum.n + myStack.pop();
calculateSum(myStack, sum);
}
return sum.n;
}