vida tutorial también sinonimo programación lenguaje inmortal framework buscó elixir

tutorial - elixir también se buscó



¿Cómo elevo un número a una potencia en Elixir? (4)

Use el módulo de matemáticas Erlang:

:math.pow(2,3) #=> 8.0

Si quieres un entero:

:math.pow(2,3) |> round #=> 8

¿Cómo puedo calcular un número con un exponente en Elixir?

Por ejemplo, 2 3 devolvería 8.


Aquí hay una implementación optimizada de la función de encendido:

def pow(n, k), do: pow(n, k, 1) defp pow(_, 0, acc), do: acc defp pow(n, k, acc), do: pow(n, k - 1, n * acc)


Erlang''s :math.pow tiene algunas limitaciones, por ejemplo, no permitirá poderes enteros realmente altos:

iex(10)> :math.pow(2, 10000) ** (ArithmeticError) bad argument in arithmetic expression

Puede volver a implementar fácilmente un algoritmo rápido para potencias informáticas que funcionará con los enteros arbitrariamente grandes proporcionados por el tiempo de ejecución:

defmodule Pow do require Integer def pow(_, 0), do: 1 def pow(x, n) when Integer.is_odd(n), do: x * pow(x, n - 1) def pow(x, n) do result = pow(x, div(n, 2)) result * result end end iex(9)> Pow.pow(2, 10000) 19950631168807583848837421626835850838234968318861924548520089498529438830...


Esto funciona, será genial cuando aprendo lo suficiente como para saber exactamente por qué funciona, probablemente algo que ver con eval debajo de las cubiertas:

defmodule Example do require Integer def do_it(list) do list |> Enum.reject(&Integer.is_odd(&1)) |> Enum.map(&(:math.pow(&1,3))) end end