Вам нужно написать цикл, потому что в какой-то момент каждый элемент в списке должен быть оценен, так что от этого не обойтись (при условии итеративного метода; вы, конечно, могли бы написать рекурсивный алгоритм, который не 'не содержит явного цикла - я проиллюстрирую оба ниже).
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
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