gpt4 book ai didi

java - 递归函数继续运行并且不打印任何内容

转载 作者:行者123 更新时间:2023-12-01 18:00:27 24 4
gpt4 key购买 nike

长话短说,我应该编写一个代码,在跳过列表中插入、删除、搜索和打印数字,第一个节点为负无​​穷大,最后一个节点为正无穷大 (-inf > (.. .) > inf)。我从插入函数中调用了搜索函数,以找到插入任何新节点的位置(仅在插入第三个节点之后),并且我在主函数外部而不是在主函数内部初始化或引用我的节点(尽管我正在争论)关于我是否应该做后者)。然而,我的一个函数可能陷入循环。

static Node search(double item, double max) {
Node head2 = head;
head2 = Start(head2, max);
//starts at the first highest node in the skiplist

//{... } //find a specific node in a skiplist

return head2;
}

//find first highest node for the search function
static Node Start(Node head2, double max) {
System.out.println(head.key + " " + head.level);

Node s = new Node();
if (head2.max < max) {
s = Start(head2.next, max);
return s;
}
else if (head2.max >= max && head2.inf == false) {
if (head2.level < head2.max) {
s = Start(head2.up, max);
return s;
}
else if (head2.level == head2.max) {
s = head;
return s;
}
}
return s;
}

start函数是从search函数中调用的(按main > double insert > Node search > Node start的顺序调用),它应该找到最高层的第一个节点。一旦这样做,它就会将该节点返回到搜索函数,以便它可以从那里开始搜索。但当调用时,它只是一片空白,尽管继续运行,但什么也没有发生。当我放入打印函数来确定问题时,它只是打印第一个节点的 key 和第一级,然后从那里变为空白。更新:我了解到该函数能够找到节点,但无法通过递归返回它。我想找到一种方法来解决这个问题。

最佳答案

问题实际上出在我的搜索功能中。

for(j = max; j >= 1; j--) {
while(head2.next != last && head2.key != item && i == 0) {
if(item > head2.key && head2.next != last) {
head2 = head2.next;
}
else if(item < head2.key || head2.next == last) {
head2 = head2.prev;
i = 1;
}
}
(...)}

这是一个不断循环的函数,所以我必须通过让它说这个来更改 while 语句while(head2.next != 最后一个 && head2.key < item && head2.inf != true && i == 0)

关于java - 递归函数继续运行并且不打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60644504/

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