gpt4 book ai didi

java - 如何在Java中实现递归方法中的引用传递

转载 作者:行者123 更新时间:2023-11-30 03:44:23 24 4
gpt4 key购买 nike

在Java中我们可以通过哪些方式实现/模拟按引用传递?为了检查链表是否是回文,我编写了以下代码。有用/但我想知道是否有其他方法可以在不编写包装类的情况下实现此目的。

   class MyClass {
ListNode mover = head;
boolean b = true;
}

public boolean checkPalindrome(){

ListNode temp = head;

int len = length()/2 + length()%2;

MyClass myObj = new MyClass();

int i =(len%2 == 1) ? len:len-1;

while(i>1){
myObj.mover = myObj.mover.next;
i--;
}
boolean e = checkPalindrome(temp, myObj, len);
return e;
}

public boolean checkPalindrome(ListNode head, MyClass ref, int len) {

if(head == null || len == 0)
return true;

len = len-1;

checkPalindrome(head.next,ref, len);
ref.mover = ref.mover.next;
ref.b = ref.b && (head.value==ref.mover.value);
return ref.b;
}

为了获得“ref”对象的当前位置,我编写了 MyClass 包装器。还有比这更好的方法吗?

最佳答案

在 Java 中执行此类操作的一个经典技巧是传递一个元素的数组参数。数组本身是通过引用传递的,函数可以操作第一个元素。像这样的事情:

myMethod(int arr[], int anotherArg) {
arr[0] = 123;
}

// Use like this:
int myArr[] = {321}
myMethod(arr, 0)
// myMethod() has "returned" something in arr's 1st element.

关于java - 如何在Java中实现递归方法中的引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093228/

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