Re: Erro de Lógica no Exercício 18
[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Erro de Lógica no Exercício 18



Ola'

On Fri, 8 Dec 2000, Marcelo de Melo Silva wrote:

> Bom dia Leonidas, eu de novo !!!!
> 
> Estou com um problema de lógica no exercício 18.
> Em implementei o seguinte código:
> 
> n:= 3:
> x:= 0:
> m := n:
> for y from n downto 1 do
>      if (x > 0 and n > 1) then x := x*(n-1)
>      elif (x = 0 and n > 1) then x := n*(n-1)
>      else x := 1
>      end_if:
> end_for:
> print(Unquoted,"O fatorial de ",m," é ",x);
> 
>                         O fatorial de , 3,  é , 24
> 
> E estava esperando o resultado correto. Por favor corrija o passo onde estou
> errando:
> n    x
> 3    0
> 2    6
> 1
> 
> Muito obrigado pela paciência,
> 
> Marcelo

O problema e' a interpretacao errada de EXPRESSAO LOGICA (EL), no if:

  if EL them comando1;
  else comando;

Confira no MuPAD como funciona o "and", nao e' "x > 0 and n > 1" e':
  
  and( x>0, n>1 )

ou seja, "and" e' uma funcao MuPAD. 

Outros problemas com o codigo acima:

 - nao implementou como funcao ("proc")
 - para que duas variaveis para calcular fatorial, se f(.) e' uma
   funcao fatorial, entao tem um so' parametro: tente codificar a
   uma definicao precisa de fatorial

          / 1, se n=1
   f(n) = |
          \ n*f(n-1), se n>1

   nao precisa usar recorrencia, basta calcular de "tras para frente",

       1 -> 1*1 -> 1*1*2 -> 1*1*2*3 -> 1*1*2*3*4 -> ...

   ou seja, num passo (inducao/laco), f := f*i

Vou deixar um pouco para voces pensarem mais.

Ate'
Leonidas

 --------------------------------------------------------------------------
 Leônidas de Oliveira Brandão  -  Computer Science Dep. of IME-USP (Brazil)
 leo@ime.usp.br - http://www.ime.usp.br/~leo - +55 (011) 3818 [6298 | 6135] 
 Interessado em Matemática?  Visite o "iMatica":   http://www.matematica.br