先看一道题
用⭐️定义一种新运算:对于任意有理数a和b
从-9,-8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9中任选两个有理数a、b,a和b不相等, 计算(a⭐️b)的值,那么所有运算结果中的最大值是?
1.用函数的方式
import Foundation
// 定义新运算符
func newOperation(_ a: Double, _ b: Double) -> Double {
return (a + b + abs(a - b)) / 2.0
}
// 查找所有可能组合的最大值
func findMaxResult() -> Double {
let rationalNumbers = Array(-9...9)
var maxResult = Double.leastNormalMagnitude // 初始化为最小的Double值
for a in rationalNumbers {
for b in rationalNumbers {
if a != b {
let result = newOperation(Double(a), Double(b))
maxResult = max(maxResult, result)
}
}
}
return maxResult
}
// 计算所有可能组合的最大值
let maximumResult = findMaxResult()
print("所有运算结果中的最大值是: \(maximumResult)")
2.用分情况总结的方式
a和b不相等,也就两种情况
a > b :
a < b :
总结: 总是等于大的那个数
3.用几何的想法,直接忽略a和b,也暂时忽略分母2
a和b不相等 就是一个大数和一个小数
看成从0开始的两个线段
a+b,就是求两个线段的总长
a-b的绝对值,就是两个线段的差值。
再想想
一个长线段+一个短线段+两个线段的差值,不就是两个长线段吗?
这时候再考虑分母2,就是一个长线段了。
当然线段长度不能为负数。这?
-9+-8=-17,-17当然不能表示长度
但你反过来想啊,这要是如向量那样,符号表示方向,不就解释通了吗?
不对,如果表示方向,那结果应该是-18,而不是-16,再想想
4.把后面两个看成一体
也就是,后面是求绝对值,也就是a和b的位置交换不影响结果。假设b是小数:
这个括号一加上去,理解起来就更通顺了。括号里不就是等于a吗?
至此 a⭐️b = a和b那个大的数。