Você está na página 1de 2

Lógica Matemática

O algoritmo a seguir trata-se de uma soma de N valores, onde N é


determinado pelo usuário. Esse tipo de bloco de código representa uma
função recursiva por parâmetro, ou seja, uma função é recursiva quando
dentro de seu código existe uma chamada da própria função.

function s=somarec2(n,i)
if(n<i)
s=0,
elseif(n==i)
s=i
else
s=n+somarec2(n-1,i),
end
end

Numa função recursiva é importante determinar a terminação das


repetições por meio de condições com a finalidade de atingir uma solução
trivial. Assim também como é importante provar que a função decresce a
cada passo de repetição, permitindo que, eventualmente, esta solução trivial
seja atingida.

A seguir iremos apresentar o teste de mesa para o algoritmo acima.

Supomos que na janela de comando da aplicação octave façamos a


chamada função – somarec2(valor de n, valor de i) passando como
parâmetro os valores 10 e 1. Nessa situação (N>I), obteremos os seguintes
valores:

S=n+somarec2(n-1,i) N I CONDIÇÃO
0 10 1 N>I
10 + (10-1) = 19 9 1 N>I
19 + (9-1) = 27 8 1 N>I
27 + (8-1) = 34 7 1 N>I
34 + (7-1) = 40 6 1 N>I
40 + (6-1) = 45 5 1 N>I
45 + (5-1) = 49 4 1 N>I
49 + (4-1) = 52 3 1 N>1
52 + (3-1) = 54 2 1 N>1
54 + (2-1) = 55 1 1 N==I
O algoritmo abaixo se refere ao apresentado em sala de aula.

function s=somarec(n,i)
if(n<i)
s=0,
elseif(n==i)
s=n,
else
s=i+somarec(n,i+1),
end
end

Teste de mesa para a função acima, passando como parâmetro


(3,1).
S = I + somarec(n, i+1) N I CONDIÇÃO
0 3 1 N>I
1+(1+1) = 3 3 2 N>I
3+(2+1)=6 3 3 N==I

Note que, esse algoritmo também é uma função recursiva ou por


indução que soma valores de N. A diferença entre ambos é que no
exemplo acima a variável I está incrementando até chegar à condição de
término e na função somarec2 N decrementa com o mesmo propósito que
é obter a solução trivial.

Nessa perspectiva, denota-se que é possível obter soma de n


valores por indução de duas maneiras e inversas. A primeira é quando
temos a variável N representando a quantidade de repetição (por meio do
decremento) que o loop será executado e a variável I como variável de
ponto de parada em relação a N para que a soma seja feita e como isso
obter a solução trivial, e a segunda o inverso, onde I representa a
quantidade de rodadas do loop ao ir se incrementando e a variável N o
ponto de parada em relação a variável I.

Você também pode gostar