Applescript 最小值不为零

Applescript 最小值不为零,applescript,integer-arithmetic,Applescript,Integer Arithmetic,在Applescript中,我需要找到最接近零但不是零的整数值。数字都是零或大于零。目前,我有三个整数 我想我可以写一个循环,但是有更简单的方法吗 示例: {0,3,4} find 3. {1,0,0} find 1 {4,10,2} find 2 {0,0,0} find nothing or 0 您需要编写一个循环,因为在某个时刻,列表中的每一项都需要求值,因此无法绕过这一点(假设使用迭代方法;当然,您可以编写一个不包含显式循环的递归算法——我将在下面说明这两种方法) 1.迭代 迭代方法

在Applescript中,我需要找到最接近零但不是零的整数值。数字都是零或大于零。目前,我有三个整数

我想我可以写一个循环,但是有更简单的方法吗

示例:

{0,3,4} find 3. 
{1,0,0} find 1
{4,10,2} find 2
{0,0,0} find nothing or 0

您需要编写一个循环,因为在某个时刻,列表中的每一项都需要求值,因此无法绕过这一点(假设使用迭代方法;当然,您可以编写一个不包含显式循环的递归算法——我将在下面说明这两种方法)

1.迭代 迭代方法通过列表中的每个数字,一个接一个地跟踪我们工作时遇到的最低的非零数字。当我们到达列表的末尾时,跟踪的值将是我们所追求的结果:

on minimumPositiveNumber from L
    local L

    if L = {} then return null

    set |ξ| to 0

    repeat with x in L
        set x to x's contents
        if (x < |ξ| and x ≠ 0) ¬
            or |ξ| = 0 then ¬
            set |ξ| to x
    end repeat

    |ξ|
end minimumPositiveNumber

get the minimumPositiveNumber from {10, 2, 0, 2, 4} --> 2
关于L中的minimumPositiveNumber
本地L
如果L={},则返回null
将|ξ|设置为0
用L中的x重复
将x设置为x的内容
如果(x<|ξ|和x≠ 0) ¬
或|ξ|=0则——
将|ξ|设为x
结束重复
|ξ|
结束最小正数
从{10,2,0,2,4}-->2中获取minimumPositiveNumber
2.递归 递归方法将列表中的第一项与列表其余部分中的最低非零值进行比较,保持最低非零值:

on minimumPositiveNumber from L
    local L

    if L = {} then return 0

    set x to the first item of L
    set y to minimumPositiveNumber from the rest of L

    if (y < x and y ≠ 0) or x = 0 then return y

    x
end minimumPositiveNumber

get the minimumPositiveNumber from {10, 2, 0, 2, 4} --> 2
关于L中的minimumPositiveNumber
本地L
如果L={},则返回0
将x设置为L的第一项
将y从L的其余部分设置为minimumPositiveNumber
if(y2中获取minimumPositiveNumber

列表中的数字是否始终按数字顺序排列?