Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bertolo

duvida em recursao

Mensagens Recomendadas

bertolo


data State = Initial Float | Iter_1 Float Float | AnyIter Float Float Float

findFixed :: Float -> State ->Int ->String
findFixed _ _ Q = "insucesso"
findFixed b (Initial s) n
   | isFixed() =  "Sucesso"
   | otherwise findFixed(itera State)


nao quis incluir o código na totalidade porque nao achei necessário e nao quero que me façam o trabalho :(. A ideia é, eu na posso iterar porque o meu return é uma string e estou a iterar sobre estados e floats.

como se resolve um problema deste genero em haskel?

nota: nao compila porque o return do caso de paragem, caso de sucesso são uma string e em caso de insucesso itera

erro: Instance of Num [Char] required for definition of findFixed

Abraços

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

O que é isFixed()? Em Haskell não se usa essa notação estilo C, se isFixed é uma função que devolve um booleano, basta ter isFixed. Se tiver argumentos usas isFixed x y.

Também não percebo o que queres fazer com itera State, uma vez que State é um tipo e não uma variável, e para além disso estás a invocar findFixed com apenas 1 argumento.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bertolo

itera :: Float -> State -> State

itera b (AnyIter a s d) = (AnyIter s d (logistica b d))

itera b (Iter_1 a s) = (AnyIter a s (logistica b s))

itera b (Initial a) = (Iter_1 a (logistica b a))

logistica :: Float -> Float -> Float

logistica b x = b*x*(1-x)

isFixed :: State -> Bool

isFixed (Iter_1 a s) = (s-a) < max_dist

isFixed (AnyIter a s d) = (s-d) < max_dist

Aquilo era uma espécie de pseudo código em C. Estas são as funções

O erro corrigi eu mais tarde ao reparar que estava mal, antes de notar que já tinhas respondido. A ideia é iterar um State (desta forma: Initial a -> Iter_1 a(estado anterior) s(estado novo) -> AnyIter a s d(novo estado) -> AnyIter s d f -> etc etc

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Está tudo muito confuso. Eu ainda não percebi o que é pretendido :/


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.