Re: Erro de Lógica no Exercício 18
- Subject: Re: Erro de Lógica no Exercício 18
- From: Leonidas O Brandao <leo@ime.usp.br>
- Date: Fri, 8 Dec 2000 12:11:34 -0200 (BRDT)
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