将弹出的整数相乘

时间:2019-03-30 03:10:13

标签: java stack tail-recursion

我正在编写一段代码以从堆栈中弹出并相乘。我知道我可以打印我的弹出整数,但是如果我弹出另一个整数,如何跟踪弹出整数?

我正在尝试使用基本计数器编写一个for循环,以弹出顶部整数,将其保存为变量,然后将该变量乘以下一个弹出的整数。

static LStack<Integer> stack = new LStack<Integer>();


        static public void main (String[] args) 
        { 


        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);

        for(int i = stack.length(); i <= 0; i++) {
            stack.pop();


        }

        }

2 个答案:

答案 0 :(得分:0)

您可能会发现使用while循环更容易/更清楚:

int result = stack.pop();
while (!stack.empty()) {
    result *= stack.pop();
}

如果必须使用for循环:

int result;
for (result = stack.pop(); !stack.empty();)
    result *= stack.pop();
}

无论如何,关键是要用堆栈中的最高值初始化最终结果,然后将其乘以从堆栈中弹出的每个元素。

答案 1 :(得分:0)

static LStack<Integer> stack = new LStack<Integer>();

/ * fact()函数* /

    public static void main(String[] args) {
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);




      System.out.println(calc(stack.pop()));
    }

    public static long calc(long n) {
        if (n <= 1)
            return 1;
        else
            return n * calc(n - 1);

}

    }

这是我最终使用的东西,在另一篇文章中实现了计算器,它似乎可以正常工作,并允许我添加其他整数。谢谢大家的宝贵时间!