【问题标题】:build an if statment using max and min使用 max 和 min 构建 if 语句
【发布时间】:2017-06-23 15:18:54
【问题描述】:

嗯,

我在这里的第一个问题。

是否可以仅使用“max”和“min”语句来构建“If”语句?

我遇到的问题是我需要比较 2 个数字(A 和 B)并查看 B > 1.1 x A。如果发生这种情况,我选择 B,如果不是,我选择 A。

有什么想法吗?

【问题讨论】:

  • 是的,很简单。 if B > 1.1 x A I pick B if not, I pick A。当然,绝对没有办法回答你的问题,因为我们不知道你是在焊接逻辑门还是在 lolcat 中编码。
  • 嗨,欢迎来到 StackOverflow。您能否扩展您的问题以指定您正在使用的语言,以及到目前为止您所尝试的内容:stackoverflow.com/help/how-to-ask。如果,如标记,您的问题是一个逻辑问题,那么我认为它属于这里:math.stackexchange.com.
  • Thanks 是一种专有语言,因此任何语言的解决方案都可以工作。
  • 感谢您的快速回答,它是一种专有语言,因此任何语言的解决方案都可以工作,因此我要求提供其背后的逻辑。假设我有函数 z=Max(x,y),其中 z 是 x 和 y 的最大值,函数 z =min(x,y),其中 z 选择 x 和 y 之间的最小值。我也有常用运算符“+”、“-”、“*”、“/”和“-”我如何构造我发布的问题?
  • max 和 min 是连续函数。它们与自身和其他算术运算的组合也是如此。您想要的函数不是连续的,如果 B 的值发生变化,它会从 A 跳转到 1.1*A。因此,您的任务似乎无法通过简单的方式解决。如果要包含像 floor 这样的不连续函数,可能会有一些方法。

标签: math logic


【解决方案1】:

如果你的逻辑运算符接受非布尔值,你可以这样做:

n = Max(B - 1.1*A, 0)
output = Max(B*(n && n), A)

【讨论】:

    【解决方案2】:

    if 语句,无论是纯(顺序不变)逻辑还是过程逻辑,都只能用于布尔语句。这意味着真或假。 min 或 max 函数返回一个数字,而不是真/假值。因此,您的问题的简短回答是否定的,不可能使用最大和最小返回值构建 if 语句。

    现在,在您的问题的详细信息中,您对自己想要的东西有了更多的了解。令人困惑的是 max 和 min 如何进入等式。 B > 1.1*A 不需要 Max 和 Min 处理,那么您是否使用 Max 和 Min 函数来到达 B 和 A?如果是这样,那么只需先处理它们,然后将它们代入该等式。

    因为“大于”和“小于”比较确实返回真/假值,所以你很幸运。只需在“if”语句中使用它。这是一些伪代码。

    max1 = 25
    max2 = 72
    min1 = 95
    min2 = 80
    
    A = Max(max1,max2)
    B = Min(min1,min2)
    
    O = NULL
    
    if B > 1.1 * A then 
        set O = B
    else 
        set O = A
    end if
    

    当 if 语句的输出是一个值而不是命令时,正如您所希望的那样,某些语言使用“elvis”运算符,这使事情变得更漂亮。使用它,您只需编写:

    O = B > 1.1 * A ? B : A
    

    【讨论】:

    • 感谢大家的回答。我怀疑这个问题没有解决方案,但你总是有希望。
    • @Eperezj 如果您接受答案没有解决方案正是因为我上面所说的,请接受我的回答,以便将来的读者可以了解。
    • 完成! pwilcox 再次感谢
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多