Algoritmo de Horner em SML? [fechadas]
Estou tentando implementarAlgoritmo de Horner em SML.
fun horner(lst1:real list,x:real) =
let
val i = ref 1
val result = ref (List.last(lst1))
in
if (lst1) = ([]:real list) then 0.0
else
while (!i <= length(lst1)-1) do
(result:=!result*x+List.nth(lst1,length(lst1)-(!i)-1);
i := !i+1);
!result
end;
Assume um {n}, o coeficiente de x ^ n, como resultado inicial, e o uso de horner avalia um polinômio.
Avalia como ((a {n} * x + a {n-1}) * x + a {n-2}) .. A lista contém os coeficientes do polinômio. O problema é a parte "se lst1 = [] .... mais". Empregar apenas o loop while faz com que o programa funcione bem. Mas não consigo pensar em nada de errado com essa parte.