recursion - 从堆栈中递归计算总和
问题描述
为什么下面的代码打印“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;
}
解决方案
曼古斯塔说的是对的。你也可以这样做:
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;
}
推荐阅读
- delphi - 如何确定数组中的数字是否为偶数
- javascript - 禁用按钮时添加警告
- c++ - 联合类型的模板特化
- laravel - 获取相关数据
- boto3 - AWS 凭证
- highcharts - 如何调整第一个类别名称在 xAxis 上的位置?
- azure - Azure 上的 ASP.Net Core APP 和 SQL - 转换数字时出现问题 - 代码在本地工作?
- python - 如何修复子进程。“CalledProcessError 命令返回非零退出状态 1”OpenedX?
- c++ - 隐藏不应在仅允许 const 访问的基类中改变的成员变量,以便可以保留赋值运算符
- amazon-web-services - AWS 无服务器 VPC 子网创建