【发布时间】:2019-09-29 06:39:37
【问题描述】:
您好,我正在尝试将此 java while 循环代码转换为递归。我尝试将其转换为递归,但我不断收到错误消息。当我将它转换为递归时,while循环工作正常,当我遇到错误时。任何有关如何将其转换为递归的帮助将不胜感激,谢谢。
public static boolean hasCycle( Node head) {
Node slow = head;
Node fast = head;
boolean loop = false;
while (slow != null && fast != null && fast.getNext() != null) {
slow = slow.getNext();
fast = fast.getNext().getNext();
if(slow == fast) {
loop = true;
break;
}
}
return loop;
}
//递归代码
Node slow = head;
Node fast = head;
boolean loop = false;
if(slow == fast) {
return true;
}else if(slow != fast) {
if(slow.getNext() != null) {
return hasCycle(slow.getNext());
}
return false;
}else {
if(fast.getNext() != null) {
return hasCycle(fast.getNext());
}
return false;
}
【问题讨论】:
-
您遇到的错误是什么?
-
在我调用递归函数的那一行一直说错误
-
您必须告诉我们错误是什么,我们才能理解问题所在。
-
另外,这永远是真的:` if(slow == fast) ` 因为在上面的行中你设置了
slow = head和fast = head。 -
“但我得到一个错误”没有帮助。告诉我们错误在哪里(在该行添加注释),然后复制错误的确切文本。否则无法为您提供帮助。
标签: java recursion data-structures