gpt4 book ai didi

java - 链表的递归

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:56 25 4
gpt4 key购买 nike

当给定一个整数数组时,我试图用它前面的整数的乘积来改变每个元素。

例如,int[] array = {2,2,3,4}; 现在是:{2, 4, 12, 48};

我将每个元素添加到一个 LinkedList 中,并且我正在尝试以递归方式执行此操作。

这是我的:

Node curr = list.getFirst();
product(curr);

public static void product(Node curr)
{
if(curr == null)
{
return;
}
else
{
int data = curr.getData() * curr.getNext().getData();
Node newNode = new Node(data);
curr.setNext(newNode);

// product(curr);
}
}

第一个产品有效:{2,4},但是当我尝试放入递归时,我得到了一个计算器。有什么建议吗??

编辑:所以我得到 stackoverflow空指针异常 的原因是因为我正在更新列表,然后尝试获取下一个整数(但由于列表中只有两个元素,因此没有 getNext())。我不确定如何解决这个问题。

最佳答案

看起来您在递归中遇到了一些麻烦。我修改了您的方法以接受 Node 以及上一次迭代的产品。在迭代的每一步,我都会更新已存在的 List 中的值,因此无需使用 new 运算符。

public static void product(Node curr, int value) {
if (curr == null) {
return;
}
else {
int data = value * curr.getData(); // compute current product
curr.setData(data); // update Node
product(curr.getNext(), data); // make recursive call
}
}

关于java - 链表的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30992450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com