有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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) 个答案