使用Java递归打印小数字列表的子集
我相信我对这个问题的理解足以满足需求。我能够总结每个子集的内容,得出一个总数。但我很好奇,在显示子集的总数之前,如何让它显示每个子集的内容。这是我的代码:
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是一个没有数据的节点。那就去吧。getNext()返回包含列表中第一项的节点,在本例中为整数5。第二个参数是初始总数,即0
谢谢你的建议。我见过一些关于子集的类似问题。由于我的方法似乎成功地计算了子集和,所以我只想知道如何准确地(如果可能的话)放置一些打印语句,以便在可能的情况下,将每个子集与子集和一起显示到右侧。例如:
5+6+7=18
共 (0) 个答案