我的代码如下:
`if (a <= 10){
z = 5;
} else {
z = -1;
}`
我发现当s(10 – a)= | 10 – a |时/(10-a)输出1或-1.如果a 10.
然后,我只求解线性方程z = s(10-a)* m b,找到常数m和b.
5 = 1 * m b且-1 = -1 * m b
哪个输出b = 2,m = 3.
然后,这可以建模为z = 3 * s(10-a)2.
现在这个问题变得更加棘手.如果我在嵌套的if语句中有两个变量怎么办?如:
`if (a <= 10){
if(b <= 3){
z = 3;
} else {
z = 1;
}
} else {
if(b <= -5){
z = -11;
} else {
z = 4;
}
}`
我试图用另一系列线性方程来解决这个问题.
> 3 = A * s(10-a)B * s(3-b)C
> 1 = A * s(10-a)B * s(3-b)C
> -11 = A * s(10-a)D * s(-5-b)C
> 4 = A * s(10-a)D * s(-5-b)C
以A,B,C,D为常数.但是,这并没有给我正确的答案.我究竟做错了什么?
解决方法:
可以使用以下技巧将if语句转换为公式:如果if语句为true,则需要查找公式为1,否则为0.我们可以使用signum函数:
f(x, y) = (sign(y - x) + 1) / 2
如果x f(a, 10) * (f(b, 3) * 3 + g(b, 3) * 1) + g(a, 10) * (f(b, -5) * -11 + g(b, -5) * 4)
标签:java,algorithm,math
来源: https://codeday.me/bug/20190527/1165656.html