我正在学习C#,并为链表制作了一个递归插入方法:
public static int recursiveInsert(ref int value, ref MyLinkedList list) {
if (list == null)
return new MyLinkedList(value, null);
else {
list.next = recursiveInsert(ref int value, ref list.next);
return list;
}
}
如何修改此方法以使递归调用如下所示:
recursiveInsert(value, ref list.next)
而不是:
list.next = recursiveInsert(ref int value, ref list.next);
答案 0 :(得分:4)
由于您实际上从未改变过通过引用传递的参数,因此您根本不能通过引用传递它们。你需要认识到MyLinkedList
是一个引用类型(它绝对应该是一个引用类型)意味着你没有传递对象本身的值,你传递了对它的引用,所以你可以改变那个引用,而不通过引用传递引用。)只需删除ref
的所有用法(并修复你的返回类型是正确的),然后你就完成了:
public static MyLinkedList recursiveInsert(int value, MyLinkedList list)
{
if (list == null)
return new MyLinkedList(value, null);
else
{
list.next = recursiveInsert(value, list.next);
return list;
}
}