算术交换的不同版本是什么,为什么它们起作用?

问题描述 投票:0回答:1

我认为我们都应该熟悉算术交换算法,该算法可以在不使用第三个变量的情况下交换两个变量。现在我发现算术交换有两种变体。请考虑以下内容:

版本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;

我想知道,为什么算术交换有两个不同的变体,为什么它们起作用?算术交换是否还有其他变体可以达到相同的结果?它们有什么关系?是否有任何优雅的数学公式可以证明为什么算术交换对所有变体都如此起作用?这两个算术交换的这两个变体之间是否有任何关联,例如潜在的真相?

math language-agnostic swap
1个回答
0
投票

破坏每个变量的含义:

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

除了数学计算出来的事实之外,没有其他的真理。请记住,每次进行作业时,它实际上都是数学方面的新“变量”。

© www.soinside.com 2019 - 2024. All rights reserved.