【发布时间】:2020-07-31 20:31:44
【问题描述】:
这个 Python 代码也可以用 Java 代码编写吗? :
def gcd(a, b):
# Return greatest common divisor using Euclid's Algorithm.
while b:
a, b = b, a % b
return a
print (gcd(210, 45))
这是我迄今为止在 Java 代码中所做的:
private static int gcd(int p, int q) {
// Return greatest common divisor using Euclid's Algorithm.
int temp;
while (q != 0) {
temp = q;
q = p % q;
p = temp;
}
return p;
}
System.out.println(gcd(210, 45));
如您所见,Java 代码使用 3 个变量,而 Python 代码仅使用 2 个变量。我还想在 Java 代码中只使用 2 个变量,我想保留 while 循环,我不想使用递归。
还有,为什么 Java 需要比 Python 代码多 1 个变量?除了 Python 代码使用元组这一事实。
【问题讨论】:
-
Java 没有用于并行赋值的语法糖,因此您需要一个临时保存变量来按顺序执行多个赋值而不会丢失信息。
-
好吧我错了,它直接使用栈来交换元素:stackoverflow.com/questions/21047524/…
-
嗯......你可以使用一些像这样的诡计:
a = a %b; a += b; b = a - b; a -= b; -
@Dici 这真的很酷。我一直认为它使用了一个临时变量,并且从未在引擎盖下看过它。好评论!
-
@Dici 好吧,但是 that 是如何实现的呢?看起来像with two temporary variables。
标签: java python algorithm while-loop modulo