我正在编写一段代码以从堆栈中弹出并相乘。我知道我可以打印我的弹出整数,但是如果我弹出另一个整数,如何跟踪弹出整数?
我正在尝试使用基本计数器编写一个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();
}
}
答案 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);
}
}
这是我最终使用的东西,在另一篇文章中实现了计算器,它似乎可以正常工作,并允许我添加其他整数。谢谢大家的宝贵时间!