在Elixir中没有while关键字,因此无法使用while循环。您可以使用递归来实现类似的功能。下面是修改后的代码:\n\nelixir\ndefmodule Solution do\n @spec halve_array(nums :: [integer]) :: integer\n def halve_array(nums) do\n pq = :queue.new()\n Enum.each(nums, fn num -> :queue.in(num, pq) end)\n res = 0\n sum = Enum.reduce(nums, 0.0, &(&1 + &2))\n sum2 = 0.0\n halve_array_recursive(pq, sum, sum2, res)\n end\n\n defp halve_array_recursive(pq, sum, sum2, res) do\n case sum2 < sum / 2 do\n true ->\n x = :queue.peek(pq)\n pq = :queue.pop(pq)\n sum2 = sum2 + x / 2\n pq = :queue.in(x / 2, pq)\n res = res + 1\n halve_array_recursive(pq, sum, sum2, res)\n false ->\n res\n end\n end\nend\n\n\n这样,代码将使用递归来模拟while循环的行为。


原文地址: https://www.cveoy.top/t/topic/p0vq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录