我有一组数字。例如set = [1,3,4,5,6,7,8]
。我需要编写一个循环,它只会选择总数小于max = 30
的元素。
for(int i = 0;i<set.length();i++) { total = total + set[i]; if (total <= max) return i; }
.....
elements are from 0 to returned index
我不知道如何只使用一个循环在haskell中递归执行。
答案 0 :(得分:2)
沿着列表走下去,发出元素,直到它们的总量太大。所以:
thePriceIsRight max (x:xs) | x <= max = x : thePriceIsRight (max-x) xs
thePriceIsRight _ _ = []
在ghci:
> thePriceIsRight 30 [1,3,4,5,6,7,8]
[1,3,4,5,6,7]