【发布时间】:2013-10-31 00:58:31
【问题描述】:
我有一个问题:如何在方法 extendedEuclid 中传递原始长类型作为引用?我发现在java中这是不可能的,有没有其他的解决方案?
参数long a必须通过引用传递,下面是一段代码。
public long extendedEuclid(long a, long b) //a have to be passed as a reference
{
long x = 0;
long y = 1;
long lx = 1;
long ly = 0;
long temp_a;
List quotient = new ArrayList<>();
while(b != 0)
{
quotient.add(a/b);
temp_a = a;
a = b;
b = temp_a % b;
}
long temp_x = x;
long temp_y = y;
for(int i=0; i<quotient.size()-1; i++)
{
x = lx - quotient.indexOf(i) * x;
y = ly - quotient.indexOf(i) * y;
lx = x;
ly = y;
i++;
if (i == quotient.size() - 1)
break;
x = temp_x - quotient.indexOf(i) * x;
y = temp_y - quotient.indexOf(i) * y;
temp_x = x;
temp_y = y;
}
return x;
}
【问题讨论】:
-
@YousufUmar Java 按值传递所有内容。一种方法是将原始类型包装在组件类型中,然后传递该类型。