Thursday, December 20, 2012

Recursividade




Para resolver esse exercício tem que tomar cuidado porque o examinador chama a função da seguinte forma função(y, x), ou seja, ele inverte a ordem.
Lembre-se de que o comando MOD retorna o RESTO da DIVISÃO INTEIRA.
Fazendo o teste de mesa temos:
               
x
y
928, 100, 28, 16, 12, 4
100, 28, 16, 12, 4, 0
1) Função(x,y:integer)


2) Y=0?  
100=0?, 28 =0?, 16=0? 12 =0? 4=0? 0=0?

       2.1) Função = x
4

3) X<y    


       3.1) função(y,x)


4) x>y


       4.1) função(y,x mod y)
100, 28, 16, 12, 4
28, 16, 12, 4, 0


 



Pra resolver a questão acima precisa saber como calcula o MDC(máximo divisor comum) entre 2 números, já que o examinador não informou como faz o cálculo do MDC, esse conceito foi cobrado como se o candidato já soubesse como calcular o MDC(FODA!!! Hehe). Relembrando como se calcula o MDC(lembre-se que MDC é diferente de MMC):
  • CÁLCULO DO M.D.C. PELO PROCESSO DAS DIVISÕES SUCESSIVAS
            Nesse processo efetuamos várias divisões até chegar a uma divisão exata. O divisor desta divisão é o m.d.c. Acompanhe o cálculo do m.d.c.(48,30).
    Regra prática:
    1º) dividimos o número maior pelo número menor;
            48 / 30 = 1 (com resto 18)
    2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão anterior, e assim sucessivamente;
            30 / 18 = 1 (com resto 12)
            18 / 12 = 1 (com resto 6)
            12 / 6 = 2 (com resto zero - divisão exata)
    3º) O divisor da divisão exata é 6. Então m.d.c.(48,30) = 6.

Realizando o teste de mesa com os números do exemplo acima (48,30) temos:

a
b
Function MDC(A, B)
30, 18, 12, 6
48, 30, 18, 12



1) B mod A = 0?
18, 12, 6, 0

      1.1) result = A
6

2) result = MDC(B, A mod B)
18(repare que o 18 é o valor do resto de B mod A, ou seja, 48 mod 30 (não é o 48, CUIDADO!!!), 12, 6
30(repare que o 30 mod 48 dá 30, ou seja, sempre o menor valor quando se tenta calcular o resto entre um número menor que o outro),18, 12


resolução:
1 + aleam(5,4) = 1+5=6


aleam(5,4)
    5=4 ou 4=0

    aleam(4,4) + aleam(4,3)
    1+ aleam(4,3) = 1+4=5

                aleam(4,3)
                               4=3 ou 3=0
                               aleam(3,3) + aleam(3,2)
                               1 + aleam(3,2)= 1+3=4
                                               aleam(3,2)
                                                               3=2 ou 2=0
                                                               aleam(2,2) + aleam(2,1)
                                                               1 + aleam(2,1) = 1 +2= 3
                                                                              aleam(2,1)
                                                                                              2=1 ou 1=0
                                                                                              aleam(1,1) + aleam(1,0)
                                                                                              1+ aleam(1,0) = 1+1
                                                                                                              aleam(1,0)
                                                                                                                             1=0 ou 0=0
                                                                                                                                             1





No comments:

Post a Comment