我正在自学算法,如果我的标题不正确,我很抱歉!我不明白如何在
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)
解决方法
尽管Java缺乏对元组的内置支持,但好消息是除了返回值之外,您不必使用元组来实现此算法.两个常规的int变量r和q都可以.
// (q,0) int q = 0,r = 0; // (q,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; } }
现在您可以从方法中返回新的QandR(q,r).