使用节点和 null 查找最小值
Finding minimum value using nodes and null
只是想知道我应该如何解释这段代码?最让我失望的是 minOfTail = next.minVal() 部分,当我们将 thisNumber 与 minOfTail 进行比较时,值到底是多少给那个变量 minOfTail?
public ListOfNVersion03PartB(int num)
{
thisNumber = num;
next = null;
++nodeCount;
nodeID = nodeCount;
}
public int minVal()
{
int minOfTail;
if ( next == null )
return thisNumber;
minOfTail = next.minVal();
if ( thisNumber <= minOfTail )
return thisNumber;
else
return minOfTail;
} // method minVal
函数递归计算object链表中thisNumber
的最小值。函数 minVal()
计算从当前 object.
开始的列表尾部中的最小值
如果当前 object 的 next
字段是 null
那么尾巴就是 object 并且从当前 [=开始的尾巴的最小值 object 只是 thisNumber
.
如果next field is not
null`那么从当前object开始的tail的最小值是
的最小值
- 当前值的
thisNumber
值和
- 从下一个 object 开始的尾部的最小值。
函数首先找到从下一个object开始的尾部的最小值并将该值赋给minOfTail
。那么它returns当前object的minOfTail
和thisNumber
的最小值。
was just wondering how I should interpret this code?
这个问题太宽泛,无法回答。
the thing thats throwing me off the most is the minOfTail = next.minVal() part
这个可以回答。
所以,整个minVal()
函数可以重写如下:
public int minVal()
{
if ( next == null )
return thisNumber;
return Math.min( thisNumber, next.minVal() );
}
甚至像这样:
public int minVal()
{
return next == null? thisNumber : Math.min( thisNumber, next.minVal() );
}
所以,next.minVal()
会直接调用next
节点计算自己的最小值,下一个节点委托给自己的下一个节点,以此类推,直到没有下一个节点.
另请注意:
int minOfTail;
... unrelated code here...
minOfTail = next.minVal();
是古老的 C 风格(C 编译器开始受 C++ 影响之前的 C 风格)在 Java 中根本不常见,在任何语言中这样做都是不明智的,而且通常不受欢迎在现代。
只是想知道我应该如何解释这段代码?最让我失望的是 minOfTail = next.minVal() 部分,当我们将 thisNumber 与 minOfTail 进行比较时,值到底是多少给那个变量 minOfTail?
public ListOfNVersion03PartB(int num)
{
thisNumber = num;
next = null;
++nodeCount;
nodeID = nodeCount;
}
public int minVal()
{
int minOfTail;
if ( next == null )
return thisNumber;
minOfTail = next.minVal();
if ( thisNumber <= minOfTail )
return thisNumber;
else
return minOfTail;
} // method minVal
函数递归计算object链表中thisNumber
的最小值。函数 minVal()
计算从当前 object.
如果当前 object 的 next
字段是 null
那么尾巴就是 object 并且从当前 [=开始的尾巴的最小值 object 只是 thisNumber
.
如果next field is not
null`那么从当前object开始的tail的最小值是
- 当前值的
thisNumber
值和 - 从下一个 object 开始的尾部的最小值。
函数首先找到从下一个object开始的尾部的最小值并将该值赋给minOfTail
。那么它returns当前object的minOfTail
和thisNumber
的最小值。
was just wondering how I should interpret this code?
这个问题太宽泛,无法回答。
the thing thats throwing me off the most is the minOfTail = next.minVal() part
这个可以回答。
所以,整个minVal()
函数可以重写如下:
public int minVal()
{
if ( next == null )
return thisNumber;
return Math.min( thisNumber, next.minVal() );
}
甚至像这样:
public int minVal()
{
return next == null? thisNumber : Math.min( thisNumber, next.minVal() );
}
所以,next.minVal()
会直接调用next
节点计算自己的最小值,下一个节点委托给自己的下一个节点,以此类推,直到没有下一个节点.
另请注意:
int minOfTail;
... unrelated code here...
minOfTail = next.minVal();
是古老的 C 风格(C 编译器开始受 C++ 影响之前的 C 风格)在 Java 中根本不常见,在任何语言中这样做都是不明智的,而且通常不受欢迎在现代。