我想我们都应该熟悉算术交换算法,它交换两个变量而不使用第三个变量。现在我发现算术交换有两种变体。请考虑以下几点:
变体1。
int a = 2;
int b = 3;
a = a + b;
b = a - b;
a = a - b;
变体2。
int a = 2;
int b = 3;
b = b - a;
a = a + b;
b = a - b;
我想知道,为什么算术交换有两种不同的变体,为什么它们可以工作?是否还有其他算术互换的变体也能达到同样的结果?它们是如何相关的?对于所有的变体,有没有什么优雅的数学公式可以证明为什么算术交换是这样工作的?这两个算术掉期的这两个变体之间是否有什么关联,比如潜在的事实?
发布于 2020-01-06 10:08:52
将每个变量分解为它所表示的内容:
a = 2
b = 3
a1 = a + b
b1 = a1 - b = (a + b) - b = a
a2 = a1 - b1 = (a + b) - a = b
a = 2
b = 3
b1 = b - a
a1 = a + b1 = a + (b - a) = b
b2 = a1 - b1 = b - (b - a) = a
除了数学能解决的事实之外,没有其他潜在的事实。请记住,每次你做一个赋值,它实际上是一个新的“变量”从数学方面。
https://stackoverflow.com/questions/59605851
复制相似问题