首页 > 解决方案 > 从堆栈中递归计算总和

问题描述

为什么下面的代码打印“6”?结果,我预计会出现“13”。

        void testSum(){
            Stack<Integer> myStack = new Stack();
            myStack.add(3);
            myStack.add(4);
            myStack.add(6);
            System.out.println(calculateSum(myStack, 0));
        }

        Integer calculateSum(Stack<Integer> myStack, int sum) {
            if (!myStack.empty()) {
                sum = sum + myStack.pop();
                calculateSum(myStack, sum);
            }
            return sum;
        }

标签: recursionstack

解决方案


曼古斯塔说的是对的。你也可以这样做:

static void testSum(){
        Stack<Integer> myStack = new Stack();
        myStack.add(3);
        myStack.add(4);
        myStack.add(6);
        System.out.println(calculateSum(myStack));
    }

static Integer calculateSum(Stack<Integer> myStack) {
    if (!myStack.empty())
        return myStack.pop() + calculateSum(myStack);
    return 0;
}

推荐阅读