Php 创建公式

Php 创建公式,php,algorithm,Php,Algorithm,比如说,我有一个变量X,一个变量Y和一个变量Z If Y = 1 then Z = 0. 下面所有的例子都是,如果Y严格大于1 * If X = 1 and Y >= 2, then Z = 1 * If X = 2 and Y >= 4, then Z = 2 (If X = 2 and Y < 4 , then Z = 1) * If X = 3 and Y >= 6, then Z = 3 (If X = 3 and Y < 6 but >= 4,

比如说,我有一个变量X,一个变量Y和一个变量Z

If Y = 1 then Z = 0.
下面所有的例子都是,如果Y严格大于1

* If X = 1 and Y >= 2, then Z = 1

* If X = 2 and Y >= 4, then Z = 2
(If X = 2 and Y < 4 , then Z = 1)

* If X = 3 and Y >= 6, then Z = 3
(If X = 3 and Y < 6 but >= 4, then Z = 2)
(If X = 3 and Y < 4 but >= 2, then Z = 1)

* If X = 4 and Y >= 8, then Z = 4
(If X = 4 and Y < 8 but >= 6, then Z = 3)
(If X = 4 and Y < 6 but >= 4, then Z = 2)
(If X = 4 and Y < 4 but >= 2, then Z = 1)

etc etc  ...

起初我以为这是我想要的,但显然不是。知道我做错了什么吗?我如何解决这个问题?

首先,我们需要分析条件和每个变量的作用

显然,X提供了Z的上界,因此Z=minX??? 仅为Y>=2提供条件,如果Y=1,则Z固定为0 地板/2=Z在上述范围内 所以Y和X必须至少为1,Z的范围为[0,X]

综上所述:

if Y < 1 or X < 1:
    some error ???
elif Y == 1
    Z = 0
else
    Z = min(X, floor(Y / 2))

这本身不是一个PHP问题。如果你能用数学的方法表达算法,那么转换成PHP就很容易了。首先试着找到一个数学公式。看起来,Z独立于X,等于floorY/2@splash58不是真的,如果X=3,Y<4,根据你的公式,结果应该是2,但它应该是1.3/2=1.5和floor->1,看起来X是一个上限,你可以用min进行测试
if Y < 1 or X < 1:
    some error ???
elif Y == 1
    Z = 0
else
    Z = min(X, floor(Y / 2))