我正在教自己算法,如果我的标题是错误的,我很抱歉!我不明白如何在Java中实现这一点。
if x = 0:
return (q,r) = (0,0)
(q, r) = divide(⌊x/2⌋, y)
q=2·q,
r=2·r
if x is odd: r=r+1
if r≥y: r=r−y, q=q+1
return (q, r)我不知道如何在Java中实现以下部分。
(q,r)=(0,0)
(q,r)=divide(⌊x/2⌋, y)
return (q,r)发布于 2016-01-22 02:39:25
尽管Java缺乏对元组的内置支持,但好消息是,除了返回值之外,您不必使用元组来实现该算法。两个常规的int变量r和q就可以了。
// (q,r)=(0,0)
int q = 0, r = 0;
// (q,r)=divide(⌊x/2⌋, y)
q = (x/2) / y;
r = (x/2) % y;返回有点棘手,因为您必须返回两个值。在Java中实现它的惯用方法是定义一个类:
class QandR {
private final int q;
private final int r;
public QandR(int q, int r) {
this.q = q;
this.r = r;
}
}现在您可以从您的方法返回new QandR(q, r)。
发布于 2016-01-22 02:40:00
可以使用数组或类实例来包含和返回多个值。例如。
(q,r),其中q和r都属于int类型
int[] qrTuple = new int[2]; // zero initialized或
class QrTuple {
int q, r;
QR(int q, int r) {
this.q = q;
this.r = r;
}
}然后
QrTuple qrTuple = new QrTuple(0, 0);在这两种情况下,您都可以在方法的末尾进行如下操作:
return qrTuple;https://stackoverflow.com/questions/34937994
复制相似问题