我相信我理解这个问题足以满足要求。我能够总结每个子集的内容以产生总数。但我很好奇如何在显示子集的总数之前让它显示每个子集的内容。这是我的代码:
public void theSum(Node currentNode, int total){
if (currentNode.getNext() == null){
System.out.println(total;
}
else {
theSum(currentNode.next, total + currentNode.getInt());
theSum(currentNode.next, total);
}
}
我尝试放置一些打印语句,但我不太确定如何将这些代码拼凑在一起,以便它自己显示子集,而不会重复。我相信逻辑是有效的,因为它只打印一次总和,并且通过我在纸上的涂鸦判断它打印每个唯一子集的总和。我只是希望能够自己打印子集。我可以用递归的方式完成这个吗?
我们假设我的简单列表是{5,6,7}。假设列表中的每个整数都存储在链表中的连续节点中。以下是我尝试显示子集的方法:
public void theSum(Node currentNode, int total){
if (currentNode.getNext() == null){
System.out.println(total);
System.out.print(currentNode.getData());
}
else {
System.out.print(currentNode.getData());
theSum(currentNode.next, total + currentNode.getData());
theSum(currentNode.next, total);
}
}
似乎返回的结果有些正确,虽然子集并没有像我希望的那样完全显示,但有一些是不完整或错误的。返回的结果是:
1236 03 034 01 0235 02 033 00 0
这样调用方法:
theSum(list.head.getNext(), 0);
head是一个没有数据的节点。因此head.getNext()返回包含列表中第一项的节点,在此示例中为整数5.第二个参数是初始总计,即0。
感谢您的任何提示。我已经看到一些问题要求关于子集的类似事情。由于看起来我的方法成功地计算了子集和,我只想知道如何准确地(如果它甚至可能)放置一些打印语句,以便我可以在可能的情况下将每个子集与子集的和显示在右边。例如:
5 + 6 + 7 = 18