SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Tutoria AEDSI
Pablo Silva
Mais de recursividade
Vamos ver mais alguns exemplos de problemas que
podemos resolver com recursividade
Seja o problema em que temos um número
natural n >= 0 e queremos descobrir a soma
de todos os números de n até 0. Como
resolver este problema recursivamente?
Entender o problema matemático
Precisamos sempre encontrar o caso base e o passo
recursivo. Mas para isso, temos que entender o
problema matemático.
Entender o problema matemático
Vejamos possíveis iterações:
0 = 0
1 = 1 + 0 = 1
2 = 2 + 1 + 0 = 3
3 = 3 + 2 + 1 + 0 = 6
...
n = n + n-1 + n-2 + ... + 0
O caso base como podemos
perceber é zero, pois é sempre
onde o problema termina!
Entender o problema matemático
Vejamos possíveis iterações:
0 = 0
1 = 1 + 0 = 1
2 = 2 + 1 + 0 = 3
3 = 3 + 2 + 1 + 0 = 6
...
n = n + n-1 + n-2 + ... + 0
O que podemos perceber
analisando as iterações, é que
começamos a somar em n e
vamos diminuindo em 1 para
cada número natural anterior a
n até zero.
n-1
Entender o problema matemático
Se assumirmos que diminuímos o problema em um fator de 1, então
teríamos a seguinte situação:
0 = 0
1 = + 0 = 1
2 = + 1 + 0 = 3
3 = + 2 + 1 + 0 = 6
...
n = + n + n-1 + ... + 0
Ao diminuirmos, percebemos que
novamente, nessa iteração, teríamos após o
n, um fator n-1 e então podemos definir
nosso passo recursivo como:
n + soma(n-1)
Pois para resolver o problema, sempre
somamos n com o seu antecessor direto (n-
1).
n-1
Soma de n termos
Nossa função então ficaria da seguinte forma:
int soma(int n){
if(n == 0)
return 0;
return n + soma(n-1);
}
Mais um exemplo
Seja o problema de elevar qualquer número n á um expoente qualquer k.
Como resolver isso de maneira recursiva. Vamos ver algumas possíveis
interações deste problema matemático, com n = 2 e k >= 0:
20
= 1
21
= 2 ∗ 20
22
= 2 ∗ 2 ∗ 20
= 2 ∗ 21
23
= 2 ∗ 2 ∗ 2 ∗ 20
= 2 ∗ 22
24
= 2 ∗ 21
∗ 21
∗ 21
∗ 20
= 2 ∗ 23
Na multiplicação de mesma base podemos somar os
expoentes e manter a base (1+1+1+0 = 3)
K - 1 Percebemos que o
problema termina sempre
que k = 0. Portanto, desta
vez, a diminuição do nosso
problema, ocorrerá no
expoente e não no número
que estamos somando.
Um fato importante a se considerar
sobre recursão
- Nós podemos ter mais de um caso base!
- Sempre precisamos encontrar uma maneira de diminuir o problema. O
fator que vamos diminuir e qual é o nosso parâmetro de diminuição não
será o mesmo para todos os problemas. Podemos, inclusive, ter que
diminuir o problema utilizando mais que um parâmetro para isso.
- É importante notar que o fator de diminuição nem sempre será em 1,
pode por exemplo ser 2 ou até mesmo dividir o problema pela metade
a cada passo recursivo!
Mais um exemplo
Seja o problema de elevar qualquer número n á um expoente qualquer k.
Como resolver isso de maneira recursiva. Vamos ver algumas possíveis
interações deste problema matemático, com n = 2 e k >= 0:
20
= 1
21
= 2 ∗ 20
22
= 2 ∗ 2 ∗ 20
= 2 ∗ 21
23
= 2 ∗ 2 ∗ 2 ∗ 20
= 2 ∗ 22
24
= 2 ∗ 21
∗ 21
∗ 21
∗ 20
= 2 ∗ 23
Na multiplicação de mesma base podemos somar os
expoentes e manter a base (1+1+1+0 = 3)
K - 1 O caso base é fácil de
perceber, pois quando k =
0, o problema terminou
para todas as iterações.
Logo k = 0 é o nosso caso
base.
Mais um exemplo
Seja o problema de elevar qualquer número n á um expoente qualquer k.
Como resolver isso de maneira recursiva. Vamos ver algumas possíveis
interações deste problema matemático, com n = 2 e k >= 0:
20
= 1
21
= 2 ∗ 20
22
= 2 ∗ 2 ∗ 20
= 2 ∗ 21
23
= 2 ∗ 2 ∗ 2 ∗ 20
= 2 ∗ 22
24
= 2 ∗ 21
∗ 21
∗ 21
∗ 20
= 2 ∗ 23
Na multiplicação de mesma base podemos somar os
expoentes e manter a base (1+1+1+0 = 3)
K - 1 Para o passo recursivo,
percebemos que sempre
podemos multiplicar n por
uma potenciação de 𝑛 𝑘−1.
O k-1 é em relação ao
expoente inicial. Logo o
passo recursivo:
𝑛 * 𝑛 𝑘−1
Potenciação recursiva
Nossa função então ficaria da seguinte forma:
int pot(int n, int k){
if(k == 0)
return 1;
return n * pot(n,k-1);
}
Análise da recursividade
Qual é a complexidade do algoritmo recursivo que
calcula o fatorial de n? Como conseguimos calcular
esse valor?
Análise da recursividade
Analisar a complexidade de algoritmos recursivos
não é tão simples assim e muitas vezes temos que
utilizar recursos matemáticos mais aguçados para
conseguir chegar à um valor.
Análise da recursividade
Analisar a complexidade de algoritmos recursivos
não é tão simples assim e muitas vezes temos que
utilizar recursos matemáticos mais aguçados para
conseguir chegar à um valor. Isto envolve saber a
descrição matemática que nos dá o
comportamento do algoritmo, que será definida
como sua relação de recorrência! (recorrência, pois o algoritmo sempre
“recorre” a si mesmo várias vezes para resolver um problema qualquer. Recorrência é o mesmo que repetição!)
Relações de recorrência
Uma relação de recorrência é sempre formada por:
o caso base e por um elemento que se parece
muito com o passo recursivo, mas tem a ver com
número de operações completadas. Vamos tentar
entender um pouco deste elemento, utilizando o
fatorial recursivo de n.
Relações de recorrência
Seja uma relação de recorrência representada pelo
símbolo 𝑇, podemos definir então a função de 𝑇(n),
que será a função que descreverá nossa relação de
recorrência, de modo que:
𝑇 𝑛 =
𝐶 , 𝑞𝑢𝑎𝑛𝑑𝑜 𝑛 𝑎𝑡𝑖𝑛𝑔𝑒 𝑜 𝑐𝑎𝑠𝑜 𝑏𝑎𝑠𝑒
𝑇 𝑛 𝑝𝑜𝑟 𝑎𝑙𝑔𝑢𝑚 𝑓𝑎𝑡𝑜𝑟 𝑑𝑒 𝑘 + 𝑑 𝑑 ≥< 0
Onde o valor mínimo de n depende do nosso problema matemático!
Relações de recorrência
Vamos utilizar como exemplo o fatorial de n.
Sabemos que o caso base é quando n = 1 e neste
caso, o valor retornado é 1. Logo C = 1 quando n = 1,
então:
𝑇 𝑛 =
1 , 𝑠𝑒 𝑛 = 1
Relações de recorrência
Agora vamos analisar a função fatorial, para encontrar nossa
relação de recorrência:
int fatorial(int n){
if( n == 1 )
return 1;
return n * fatorial(n-1);
}
Para encontrar a recorrência do algoritmo temos
que nos atentar para o número de operações
que temos a cada passo. Olhando para o passo
recursivo, pode-se perceber que sempre vamos
ter 1 multiplicação mais uma chamada da função
fatorial com o nosso problema diminuído em 1.
Portanto nossa recorrência pode ser definida
por:
1 + 𝑇 𝑛 − 1
Onde T refere-se neste caso a função fatorial!
Uma multiplicação e uma
chamada de função com o
problema diminuído em 1!
Relações de recorrência
Logo, k = 1, o fator de diminuição é uma subtração
por k e d = 1, que é o valor de operações
completadas por cada chamada da função.
𝑇 𝑛 =
1 , 𝑠𝑒 𝑛 = 1
𝑇 𝑛 − 1 + 1 ,
Relações de recorrência
Para finalizar o nosso T(n), precisamos definir o valor
mínimo que n atinge em que a recorrência ainda
existe. Neste caso, é todo valor que n assume que é
maior que o caso base. Logo
𝑇 𝑛 =
1 , 𝑠𝑒 𝑛 = 1
𝑇 𝑛 − 1 + 1 , 𝑝𝑎𝑟𝑎 𝑛 > 1
Quando n atingir 1, não teremos mais recorrências!
Como resolver uma relação de recorrência?
Temos duas maneiras de resolver uma relação de
recorrência:
- Por expansão dos fatores
- Por indução matemática
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
1º) Copie a fórmula original
𝑇 𝑛 = 𝑇 𝑛 − 1 + 1
2º) Descubra por quanto que a recorrência é diminuída a cada passo (fator de
diminuição k)
T(n) está escrito em função de T(n-1) então a cada passo o parâmetro n é
subtraído de 1 (k = 1)
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
3º) Encontre o valor de T para os próximos valores da diminuição,
utilizando valor da equação original T(n) = T(n – 1) + 1
Como já sabemos que o fator de diminuição é subtraído de 1, então
devemos achar os valores de T(n-1), T(n-2), T(n-3) e assim por diante,
substituindo n pelos respectivos valores na equação inicial.
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
3º) Encontre o valor de T para os próximos valores da diminuição,
utilizando valor da equação original T(n) = T(n – 1) + 1
Se ainda está confuso o que devemos fazer, pense nesse problema
matemático, seja:
𝑓 𝑥 = 2𝑥
Se queremos saber o valor de f(2) e f(3) logo x = 2, x = 3, então fazemos:
𝑓 2 = 2 ∗ 2 = 4
𝑓 3 = 2 ∗ 3 = 6
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
3º) Encontre o valor de T para os próximos valores da diminuição, utilizando valor
da equação original T(n) = T(n – 1) + 1
Portanto se queremos saber os valores de T(n-1), T(n-2)... Então n = n-1, n = n-2,...
E fazemos como anteriormente substituindo os valores de n. Logo:
𝑇 (𝑛 − 1) = 𝑇 𝑛 − 1 − 1 + 1 = T n − 2 + 1 (3.1)
𝑇 (𝑛 − 2) = 𝑇 𝑛 − 2 − 1 + 1 = T n − 3 + 1(3.2)
𝑇 (𝑛 − 3) = 𝑇 𝑛 − 3 − 1 + 1 = T n − 4 + 1(3.3)
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
4º) Substitua os valores encontrados em 3, na equação original (chamamos isto de
expansão da recorrência) T(n) = T(n-1) + 1
Utilizando 3.1, onde encontramos o valor de T(n-1):
𝑇 𝑛 = 𝑇 𝑛 − 2 + 1 + 1 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1)
Utilizando 3.2, onde encontramos o valor de T(n-2), substituímos em 4.1
𝑇 𝑛 = 𝑇 𝑛 − 3 + 1 + 2 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 (4.2)
k
k
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
4º) Continuamos a substituir, até conseguirmos enxergar um padrão nas expansões:
Utilizando 3.2, onde encontramos o valor de T(n-3), substituímos em 4.2:
𝑇 𝑛 = 𝑇 𝑛 − 4 + 1 + 3 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 (4.3)
Podemos notar que o valor de k incrementa a cada expansão, que é o comportamento
experado, já que estamos sempre diminuindo a recorrência pelo fator de 1 (valor inicial
de k). A ideia é perceber o comportamento da recorrência ao se aumentar o valor de k
(diminuir a recorrência)!
k
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
4º) Analisando todas as iterações:
𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1)
𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 4.2
𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 4.3
k
A cada expansão da recorrência, k assume um novo valor. Percebemos também que o valor constante que é
somado a recorrência e indica a quantidade de multiplicações que teremos que realizar para encontrar a
solução do problema (fatorial de n) é o mesmo valor de k em todas as iterações.
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
4º) Analisando todas as iterações:
𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1)
𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 4.2
𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 4.3
k
Logo, depois de k expansões teremos:
𝑇 𝑛 = 𝑇 𝑛 − 𝑘 + 𝑘
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
5º) Encontrar quando a expansão para. Precisamos pensar no caso base, que é o
mesmo que pensar em quando T(n-k) nos retornará um valor. Olhando para o caso
base, sabemos que teremos um valor de retorno e não uma nova recorrência quando n
= 1. Para o nosso caso, n = (n-k) que é o valor de argumento da recorrência [T(n-k)]
𝑇 𝑛 = 𝑇 𝑛 − 𝑘 + 𝑘 (5.1)
Logo precisamos saber quando n-k = 1, pois então teremos T(1) e já sabemos que isso é
igual a 1.
𝑛 − 𝑘 = 1 ⇒ 𝑘 = 𝑛 − 1
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
5º) Substituindo o valor de k encontrado (n-1) em 5.1 temos
𝑇 𝑛 = 𝑇 𝑛 − (𝑛 − 1) + 𝑛 − 1
= 𝑇 1 + 𝑛 − 1
Como sabemos que T(1) = 1, então
𝑇 𝑛 = 1 + 𝑛 − 1
𝑇 𝑛 = 𝑛
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
6º) Definir o limite assintótico de T(n)
Como encontramos que T(n) = n, então neste caso sabemos que o algoritmo fatorial de
n recursivo é O(n), maior grau no polinômio encontrado.
Na prática, depois de várias décadas de estudo, sabe-se que o resultado da relação de
recorrência é suficiente para conhecer a complexidade do algoritmo, porém se
quisermos realmente provar (e às vezes isso será necessário!), precisamos utilizar
indução matemática, que é um método da matemática discreta que nos ensina como
provar problemas matemáticos, entre eles relações de recorrência.
Resolvendo recorrências por expansão de
fatores. Receita de bolo!
6º) Definir o limite assintótico de T(n)
Como encontramos que T(n) = n, então neste caso sabemos que o algoritmo fatorial de
n recursivo é O(n), maior grau no polinômio encontrado.
Na prática, depois de várias décadas de estudo, sabe-se que o resultado da relação de
recorrência é suficiente para conhecer a complexidade do algoritmo, porém se
quisermos realmente provar (e às vezes isso será necessário!), precisamos utilizar
indução matemática, que é um método da matemática discreta que nos ensina como
provar problemas matemáticos, entre eles relações de recorrência.
Indução matemática
Em uma linguagem bem simplificada. Você pode usar a indução
matemática para provar uma expressão matemática quando:
1 – Sabe que ela é verdadeira para algum valor.
2 – Quer provar que ela é válida então para esse valor em
relação a um fator de um (pode ser aumentar ou diminuir). Ou
seja, quer provar que o próximo valor e os próximos valores
depois deste também são verdadeiros.
Indução matemática
Características:
1 – O passo 1 do slide anterior é chamado de passo base.
2 – O passo 2 é o passo indutivo.
Indução matemática
Exemplo. Seja um teorema que tenha como parâmetro um número
natural n. Provando que T é válido para todos os valores de n,
provamos que:
1 – T é válido para n = 1 (eu tenho que saber que isto é verdade!);
2 – Para todo n > 1, se T é válido para n – 1, então T é válido para n
(Se conseguirmos provar que n – 1 é válido (e isto implica em provar
que n – 2, n – 3 e assim por diante também é válido), então podemos
provar que n é verdadeiro. Esse é o passo indutivo.
O que é uma prova?
Em matemática, uma prova é uma argumentação
precisa que procura convencer o leitor de que uma
certa preposição, previamente enunciada está
correta. Num sentindo mais informa, uma prova é
um texto que ajuda o leitor a entender por que
uma dada afirmação é verdadeira!
Provando uma relação de recorrência por indução
matemática
Primeiro temos que provar que o passo base é verdadeiro. Para
nossa equação de recorrência do problema do fatorial:
𝑇 𝑛 =
1 , 𝑠𝑒 𝑛 = 1
𝑇 𝑛 − 1 + 1 , 𝑝𝑎𝑟𝑎 𝑛 > 1
Logo primeiro queremos provar que T(1) = 1. Sabemos que T(1)
é verdadeiro, pois quando n = 1, o algoritmo não realiza
nenhuma multiplicação. Logo, o nosso caso base é verdadeiro!
Provando uma relação de recorrência por indução
matemática
Agora supomos que T(k) = k (pois não sabemos quanto é
realmente este valor antes de calcular todas as multiplicações. A
variável n foi substituída por k, pois estamos generalizando para
quaisquer valores n > 1, pois quando n = 1 já provamos ser
verdadeiro). Para provar que T(k) = k é verdadeiro, precisamos
provar que T(k + 1) = k + 1 também é verdadeiro. Se
conseguirmos provar que T(k + 1) é verdadeiro, então T(k)
também será verdadeiro, pois derivamos T(k+1) de T(k) e assim
nosso passo indutivo seria verdadeiro e nossa relação de
recorrência também.
Provando uma relação de recorrência por indução
matemática
A ideia principal aqui é a seguinte. Vamos encontrar definir
nossa hipótese de indução. A hipótese de indução é sempre
nosso passo recursivo:
𝑇 𝑛 = 𝑇 𝑛 − 1 + 1
Vamos a partir da nossa hipótese de indução, determinar o valor
de T(k + 1).
Provando uma relação de recorrência por indução
matemática
𝑇 𝑘 + 1 = 𝑇 (𝑘 + 1) − 1 + 1
= 𝑇 𝑘 + 1
Sempre, que queremos provar T(k+1), precisamos tentar deixá-lo
em função de T(k), que é o valor que supomos no começo do
exercício que queríamos provar. Supomos que T(k) = k, então
vamos substituí-lo na expressão encontrada acima.
Provando uma relação de recorrência por indução
matemática
Como supomos que T(k) = k no começo do exercícios,
podemos então substituí-lo na expressão encontrada no slide
anterior:
𝑇 𝑘 + 1 = 𝑇 𝑘 + 1
T(k + 1) = 𝑘 + 1
Note que é exatamente o que queríamos provar, pois lembre-se
que no começo do exercício, supomos T(k) = k e queríamos
provar que T(k+1) = k +1.
Provando uma relação de recorrência por indução
matemática
Escrever uma prova de indução matemática sempre envolve:
- Provar o caso base
- Supor T(k) = k e tentar provar que T(k+1) = k+1
- Encontrar uma hipótese de indução, que é o nosso passo
recursivo
- Utilizar a hipótese de indução para encontrar T(k+1) em
função de T(k)
- Manipular T(k+1) para que ele seja k+1

Mais conteúdo relacionado

Mais procurados

Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Alex Camargo
 
Função quadrática 10º exercicios
Função quadrática 10º exerciciosFunção quadrática 10º exercicios
Função quadrática 10º exerciciosAna Tapadinhas
 
14.3 derivadas parciais [pt. 1]
14.3 derivadas parciais [pt. 1]14.3 derivadas parciais [pt. 1]
14.3 derivadas parciais [pt. 1]Cristiano Miranda
 
Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergênciaPedro Neto
 
Resolução de equações paramétricas
Resolução de equações paramétricasResolução de equações paramétricas
Resolução de equações paramétricasPaulo Mutolo
 
Matemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaMatemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaRanilson Paiva
 
Introdução a Teoria dos Grafos
Introdução a Teoria dos GrafosIntrodução a Teoria dos Grafos
Introdução a Teoria dos GrafosChromus Master
 
Questões de progressão geometrica 01
Questões de progressão geometrica 01Questões de progressão geometrica 01
Questões de progressão geometrica 01Deusvaldo Junior
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equaçõesmarilia65
 
Classificação das equações do 1º grau com uma
Classificação das equações do 1º grau com umaClassificação das equações do 1º grau com uma
Classificação das equações do 1º grau com umaAlexandre Cirqueira
 
Problemas de 1º grau
Problemas de 1º grauProblemas de 1º grau
Problemas de 1º grauBlairvll
 
Caderno de exercícios equação do 2º grau
Caderno de exercícios equação do 2º grauCaderno de exercícios equação do 2º grau
Caderno de exercícios equação do 2º grauHéstia Romanowski
 
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas (63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas wilkerfilipel
 
Aula 6 principio inclusaoeexclusao-casadepombos
Aula 6   principio inclusaoeexclusao-casadepombosAula 6   principio inclusaoeexclusao-casadepombos
Aula 6 principio inclusaoeexclusao-casadepomboswab030
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlex Camargo
 

Mais procurados (20)

Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas lineares
 
Função quadrática 10º exercicios
Função quadrática 10º exerciciosFunção quadrática 10º exercicios
Função quadrática 10º exercicios
 
14.3 derivadas parciais [pt. 1]
14.3 derivadas parciais [pt. 1]14.3 derivadas parciais [pt. 1]
14.3 derivadas parciais [pt. 1]
 
Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergência
 
Resolução de equações paramétricas
Resolução de equações paramétricasResolução de equações paramétricas
Resolução de equações paramétricas
 
Matemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à DisciplinaMatemática Discreta - Introdução à Disciplina
Matemática Discreta - Introdução à Disciplina
 
Introdução a Teoria dos Grafos
Introdução a Teoria dos GrafosIntrodução a Teoria dos Grafos
Introdução a Teoria dos Grafos
 
Questões de progressão geometrica 01
Questões de progressão geometrica 01Questões de progressão geometrica 01
Questões de progressão geometrica 01
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equações
 
Classificação das equações do 1º grau com uma
Classificação das equações do 1º grau com umaClassificação das equações do 1º grau com uma
Classificação das equações do 1º grau com uma
 
Problemas de 1º grau
Problemas de 1º grauProblemas de 1º grau
Problemas de 1º grau
 
Caderno de exercícios equação do 2º grau
Caderno de exercícios equação do 2º grauCaderno de exercícios equação do 2º grau
Caderno de exercícios equação do 2º grau
 
Aula 05 derivadas - conceitos iniciais
Aula 05   derivadas - conceitos iniciaisAula 05   derivadas - conceitos iniciais
Aula 05 derivadas - conceitos iniciais
 
Inequacoes1
Inequacoes1Inequacoes1
Inequacoes1
 
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas (63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas lineares
 
Aula 6 principio inclusaoeexclusao-casadepombos
Aula 6   principio inclusaoeexclusao-casadepombosAula 6   principio inclusaoeexclusao-casadepombos
Aula 6 principio inclusaoeexclusao-casadepombos
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: Matrizes
 

Destaque

Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmosPablo Silva
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basicDaniel Carrara
 

Destaque (20)

Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Funções em C
Funções em CFunções em C
Funções em C
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 

Semelhante a Soma recursiva de números naturais

Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiaisRomulo Garcia
 
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostos
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostosCálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostos
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostosMaths Tutoring
 
Lista de exercícios 1
Lista de exercícios 1Lista de exercícios 1
Lista de exercícios 1Carlos Campani
 
Linguagem C - Recursão [exercícios]
Linguagem C - Recursão [exercícios]Linguagem C - Recursão [exercícios]
Linguagem C - Recursão [exercícios]Matheus Alves
 
Apostila matematica
Apostila matematicaApostila matematica
Apostila matematicaJ M
 
Unprotected apostila-matematica
Unprotected apostila-matematicaUnprotected apostila-matematica
Unprotected apostila-matematicaJ M
 
Sequencias e series unicamp
Sequencias e series   unicampSequencias e series   unicamp
Sequencias e series unicampLuis Gustavo
 
Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)Jedson Guedes
 
Sequencias e series
Sequencias e seriesSequencias e series
Sequencias e seriesRodrigo Jrs
 
Intro teoria dos números cap2
Intro teoria dos  números cap2Intro teoria dos  números cap2
Intro teoria dos números cap2Paulo Martins
 
Equação do primeiro grau para 7º ano
Equação do primeiro grau para 7º anoEquação do primeiro grau para 7º ano
Equação do primeiro grau para 7º anoAriosvaldo Carvalho
 
Apostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iApostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iClaudia Sá de Moura
 
Matematica (petro)
Matematica (petro)Matematica (petro)
Matematica (petro)dudaso
 
Binômio de newton e triângulo de pascal
Binômio de newton e triângulo de pascalBinômio de newton e triângulo de pascal
Binômio de newton e triângulo de pascalespacoaberto
 

Semelhante a Soma recursiva de números naturais (20)

Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiais
 
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostos
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostosCálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostos
Cálculo Diferencial e Integral - Sucessões - Exercicios resolvidos e propostos
 
Lista de exercícios 1
Lista de exercícios 1Lista de exercícios 1
Lista de exercícios 1
 
Linguagem C - Recursão [exercícios]
Linguagem C - Recursão [exercícios]Linguagem C - Recursão [exercícios]
Linguagem C - Recursão [exercícios]
 
Apostila matematica
Apostila matematicaApostila matematica
Apostila matematica
 
Unprotected apostila-matematica
Unprotected apostila-matematicaUnprotected apostila-matematica
Unprotected apostila-matematica
 
Sequencias e series unicamp
Sequencias e series   unicampSequencias e series   unicamp
Sequencias e series unicamp
 
Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)
 
Mat regra de sinais
Mat regra de sinaisMat regra de sinais
Mat regra de sinais
 
94204719 teoria-dos-numeros
94204719 teoria-dos-numeros94204719 teoria-dos-numeros
94204719 teoria-dos-numeros
 
Aula N02
Aula N02Aula N02
Aula N02
 
Sequencias e series
Sequencias e seriesSequencias e series
Sequencias e series
 
Intro teoria dos números cap2
Intro teoria dos  números cap2Intro teoria dos  números cap2
Intro teoria dos números cap2
 
SucessõEs 4
SucessõEs 4SucessõEs 4
SucessõEs 4
 
03 inducao i
03 inducao i03 inducao i
03 inducao i
 
Equação do primeiro grau para 7º ano
Equação do primeiro grau para 7º anoEquação do primeiro grau para 7º ano
Equação do primeiro grau para 7º ano
 
Apostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iApostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-i
 
Matematica (petro)
Matematica (petro)Matematica (petro)
Matematica (petro)
 
A3 me
A3 meA3 me
A3 me
 
Binômio de newton e triângulo de pascal
Binômio de newton e triângulo de pascalBinômio de newton e triângulo de pascal
Binômio de newton e triângulo de pascal
 

Mais de Pablo Silva

Agilidade, times e outras coisas mais
Agilidade, times e outras coisas maisAgilidade, times e outras coisas mais
Agilidade, times e outras coisas maisPablo Silva
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performancePablo Silva
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performancePablo Silva
 
Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...Pablo Silva
 
OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?Pablo Silva
 
Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...Pablo Silva
 
As próximas ondas da tecnologia
As próximas ondas da tecnologiaAs próximas ondas da tecnologia
As próximas ondas da tecnologiaPablo Silva
 
Carreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vemCarreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vemPablo Silva
 
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio Pablo Silva
 
Lets talk about OKRs
Lets talk about OKRsLets talk about OKRs
Lets talk about OKRsPablo Silva
 
2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-driven2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-drivenPablo Silva
 
Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!Pablo Silva
 
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...Pablo Silva
 
Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)Pablo Silva
 
Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)Pablo Silva
 
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoDual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoPablo Silva
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em CPablo Silva
 

Mais de Pablo Silva (18)

Agilidade, times e outras coisas mais
Agilidade, times e outras coisas maisAgilidade, times e outras coisas mais
Agilidade, times e outras coisas mais
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
 
Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...
 
OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?
 
Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...
 
As próximas ondas da tecnologia
As próximas ondas da tecnologiaAs próximas ondas da tecnologia
As próximas ondas da tecnologia
 
Carreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vemCarreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vem
 
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
 
Lets talk about OKRs
Lets talk about OKRsLets talk about OKRs
Lets talk about OKRs
 
2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-driven2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-driven
 
Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!
 
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
 
Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)
 
Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)
 
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoDual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
 
Structs em C
Structs em CStructs em C
Structs em C
 

Último

trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Prova uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfProva uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfArthurRomanof1
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaAula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaaulasgege
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 

Último (20)

trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Prova uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfProva uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdf
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaAula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 

Soma recursiva de números naturais

  • 2. Mais de recursividade Vamos ver mais alguns exemplos de problemas que podemos resolver com recursividade
  • 3. Seja o problema em que temos um número natural n >= 0 e queremos descobrir a soma de todos os números de n até 0. Como resolver este problema recursivamente?
  • 4. Entender o problema matemático Precisamos sempre encontrar o caso base e o passo recursivo. Mas para isso, temos que entender o problema matemático.
  • 5. Entender o problema matemático Vejamos possíveis iterações: 0 = 0 1 = 1 + 0 = 1 2 = 2 + 1 + 0 = 3 3 = 3 + 2 + 1 + 0 = 6 ... n = n + n-1 + n-2 + ... + 0 O caso base como podemos perceber é zero, pois é sempre onde o problema termina!
  • 6. Entender o problema matemático Vejamos possíveis iterações: 0 = 0 1 = 1 + 0 = 1 2 = 2 + 1 + 0 = 3 3 = 3 + 2 + 1 + 0 = 6 ... n = n + n-1 + n-2 + ... + 0 O que podemos perceber analisando as iterações, é que começamos a somar em n e vamos diminuindo em 1 para cada número natural anterior a n até zero. n-1
  • 7. Entender o problema matemático Se assumirmos que diminuímos o problema em um fator de 1, então teríamos a seguinte situação: 0 = 0 1 = + 0 = 1 2 = + 1 + 0 = 3 3 = + 2 + 1 + 0 = 6 ... n = + n + n-1 + ... + 0 Ao diminuirmos, percebemos que novamente, nessa iteração, teríamos após o n, um fator n-1 e então podemos definir nosso passo recursivo como: n + soma(n-1) Pois para resolver o problema, sempre somamos n com o seu antecessor direto (n- 1). n-1
  • 8. Soma de n termos Nossa função então ficaria da seguinte forma: int soma(int n){ if(n == 0) return 0; return n + soma(n-1); }
  • 9. Mais um exemplo Seja o problema de elevar qualquer número n á um expoente qualquer k. Como resolver isso de maneira recursiva. Vamos ver algumas possíveis interações deste problema matemático, com n = 2 e k >= 0: 20 = 1 21 = 2 ∗ 20 22 = 2 ∗ 2 ∗ 20 = 2 ∗ 21 23 = 2 ∗ 2 ∗ 2 ∗ 20 = 2 ∗ 22 24 = 2 ∗ 21 ∗ 21 ∗ 21 ∗ 20 = 2 ∗ 23 Na multiplicação de mesma base podemos somar os expoentes e manter a base (1+1+1+0 = 3) K - 1 Percebemos que o problema termina sempre que k = 0. Portanto, desta vez, a diminuição do nosso problema, ocorrerá no expoente e não no número que estamos somando.
  • 10. Um fato importante a se considerar sobre recursão - Nós podemos ter mais de um caso base! - Sempre precisamos encontrar uma maneira de diminuir o problema. O fator que vamos diminuir e qual é o nosso parâmetro de diminuição não será o mesmo para todos os problemas. Podemos, inclusive, ter que diminuir o problema utilizando mais que um parâmetro para isso. - É importante notar que o fator de diminuição nem sempre será em 1, pode por exemplo ser 2 ou até mesmo dividir o problema pela metade a cada passo recursivo!
  • 11. Mais um exemplo Seja o problema de elevar qualquer número n á um expoente qualquer k. Como resolver isso de maneira recursiva. Vamos ver algumas possíveis interações deste problema matemático, com n = 2 e k >= 0: 20 = 1 21 = 2 ∗ 20 22 = 2 ∗ 2 ∗ 20 = 2 ∗ 21 23 = 2 ∗ 2 ∗ 2 ∗ 20 = 2 ∗ 22 24 = 2 ∗ 21 ∗ 21 ∗ 21 ∗ 20 = 2 ∗ 23 Na multiplicação de mesma base podemos somar os expoentes e manter a base (1+1+1+0 = 3) K - 1 O caso base é fácil de perceber, pois quando k = 0, o problema terminou para todas as iterações. Logo k = 0 é o nosso caso base.
  • 12. Mais um exemplo Seja o problema de elevar qualquer número n á um expoente qualquer k. Como resolver isso de maneira recursiva. Vamos ver algumas possíveis interações deste problema matemático, com n = 2 e k >= 0: 20 = 1 21 = 2 ∗ 20 22 = 2 ∗ 2 ∗ 20 = 2 ∗ 21 23 = 2 ∗ 2 ∗ 2 ∗ 20 = 2 ∗ 22 24 = 2 ∗ 21 ∗ 21 ∗ 21 ∗ 20 = 2 ∗ 23 Na multiplicação de mesma base podemos somar os expoentes e manter a base (1+1+1+0 = 3) K - 1 Para o passo recursivo, percebemos que sempre podemos multiplicar n por uma potenciação de 𝑛 𝑘−1. O k-1 é em relação ao expoente inicial. Logo o passo recursivo: 𝑛 * 𝑛 𝑘−1
  • 13. Potenciação recursiva Nossa função então ficaria da seguinte forma: int pot(int n, int k){ if(k == 0) return 1; return n * pot(n,k-1); }
  • 14. Análise da recursividade Qual é a complexidade do algoritmo recursivo que calcula o fatorial de n? Como conseguimos calcular esse valor?
  • 15. Análise da recursividade Analisar a complexidade de algoritmos recursivos não é tão simples assim e muitas vezes temos que utilizar recursos matemáticos mais aguçados para conseguir chegar à um valor.
  • 16. Análise da recursividade Analisar a complexidade de algoritmos recursivos não é tão simples assim e muitas vezes temos que utilizar recursos matemáticos mais aguçados para conseguir chegar à um valor. Isto envolve saber a descrição matemática que nos dá o comportamento do algoritmo, que será definida como sua relação de recorrência! (recorrência, pois o algoritmo sempre “recorre” a si mesmo várias vezes para resolver um problema qualquer. Recorrência é o mesmo que repetição!)
  • 17. Relações de recorrência Uma relação de recorrência é sempre formada por: o caso base e por um elemento que se parece muito com o passo recursivo, mas tem a ver com número de operações completadas. Vamos tentar entender um pouco deste elemento, utilizando o fatorial recursivo de n.
  • 18. Relações de recorrência Seja uma relação de recorrência representada pelo símbolo 𝑇, podemos definir então a função de 𝑇(n), que será a função que descreverá nossa relação de recorrência, de modo que: 𝑇 𝑛 = 𝐶 , 𝑞𝑢𝑎𝑛𝑑𝑜 𝑛 𝑎𝑡𝑖𝑛𝑔𝑒 𝑜 𝑐𝑎𝑠𝑜 𝑏𝑎𝑠𝑒 𝑇 𝑛 𝑝𝑜𝑟 𝑎𝑙𝑔𝑢𝑚 𝑓𝑎𝑡𝑜𝑟 𝑑𝑒 𝑘 + 𝑑 𝑑 ≥< 0 Onde o valor mínimo de n depende do nosso problema matemático!
  • 19. Relações de recorrência Vamos utilizar como exemplo o fatorial de n. Sabemos que o caso base é quando n = 1 e neste caso, o valor retornado é 1. Logo C = 1 quando n = 1, então: 𝑇 𝑛 = 1 , 𝑠𝑒 𝑛 = 1
  • 20. Relações de recorrência Agora vamos analisar a função fatorial, para encontrar nossa relação de recorrência: int fatorial(int n){ if( n == 1 ) return 1; return n * fatorial(n-1); } Para encontrar a recorrência do algoritmo temos que nos atentar para o número de operações que temos a cada passo. Olhando para o passo recursivo, pode-se perceber que sempre vamos ter 1 multiplicação mais uma chamada da função fatorial com o nosso problema diminuído em 1. Portanto nossa recorrência pode ser definida por: 1 + 𝑇 𝑛 − 1 Onde T refere-se neste caso a função fatorial! Uma multiplicação e uma chamada de função com o problema diminuído em 1!
  • 21. Relações de recorrência Logo, k = 1, o fator de diminuição é uma subtração por k e d = 1, que é o valor de operações completadas por cada chamada da função. 𝑇 𝑛 = 1 , 𝑠𝑒 𝑛 = 1 𝑇 𝑛 − 1 + 1 ,
  • 22. Relações de recorrência Para finalizar o nosso T(n), precisamos definir o valor mínimo que n atinge em que a recorrência ainda existe. Neste caso, é todo valor que n assume que é maior que o caso base. Logo 𝑇 𝑛 = 1 , 𝑠𝑒 𝑛 = 1 𝑇 𝑛 − 1 + 1 , 𝑝𝑎𝑟𝑎 𝑛 > 1 Quando n atingir 1, não teremos mais recorrências!
  • 23. Como resolver uma relação de recorrência? Temos duas maneiras de resolver uma relação de recorrência: - Por expansão dos fatores - Por indução matemática
  • 24. Resolvendo recorrências por expansão de fatores. Receita de bolo! 1º) Copie a fórmula original 𝑇 𝑛 = 𝑇 𝑛 − 1 + 1 2º) Descubra por quanto que a recorrência é diminuída a cada passo (fator de diminuição k) T(n) está escrito em função de T(n-1) então a cada passo o parâmetro n é subtraído de 1 (k = 1)
  • 25. Resolvendo recorrências por expansão de fatores. Receita de bolo! 3º) Encontre o valor de T para os próximos valores da diminuição, utilizando valor da equação original T(n) = T(n – 1) + 1 Como já sabemos que o fator de diminuição é subtraído de 1, então devemos achar os valores de T(n-1), T(n-2), T(n-3) e assim por diante, substituindo n pelos respectivos valores na equação inicial.
  • 26. Resolvendo recorrências por expansão de fatores. Receita de bolo! 3º) Encontre o valor de T para os próximos valores da diminuição, utilizando valor da equação original T(n) = T(n – 1) + 1 Se ainda está confuso o que devemos fazer, pense nesse problema matemático, seja: 𝑓 𝑥 = 2𝑥 Se queremos saber o valor de f(2) e f(3) logo x = 2, x = 3, então fazemos: 𝑓 2 = 2 ∗ 2 = 4 𝑓 3 = 2 ∗ 3 = 6
  • 27. Resolvendo recorrências por expansão de fatores. Receita de bolo! 3º) Encontre o valor de T para os próximos valores da diminuição, utilizando valor da equação original T(n) = T(n – 1) + 1 Portanto se queremos saber os valores de T(n-1), T(n-2)... Então n = n-1, n = n-2,... E fazemos como anteriormente substituindo os valores de n. Logo: 𝑇 (𝑛 − 1) = 𝑇 𝑛 − 1 − 1 + 1 = T n − 2 + 1 (3.1) 𝑇 (𝑛 − 2) = 𝑇 𝑛 − 2 − 1 + 1 = T n − 3 + 1(3.2) 𝑇 (𝑛 − 3) = 𝑇 𝑛 − 3 − 1 + 1 = T n − 4 + 1(3.3)
  • 28. Resolvendo recorrências por expansão de fatores. Receita de bolo! 4º) Substitua os valores encontrados em 3, na equação original (chamamos isto de expansão da recorrência) T(n) = T(n-1) + 1 Utilizando 3.1, onde encontramos o valor de T(n-1): 𝑇 𝑛 = 𝑇 𝑛 − 2 + 1 + 1 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1) Utilizando 3.2, onde encontramos o valor de T(n-2), substituímos em 4.1 𝑇 𝑛 = 𝑇 𝑛 − 3 + 1 + 2 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 (4.2) k k
  • 29. Resolvendo recorrências por expansão de fatores. Receita de bolo! 4º) Continuamos a substituir, até conseguirmos enxergar um padrão nas expansões: Utilizando 3.2, onde encontramos o valor de T(n-3), substituímos em 4.2: 𝑇 𝑛 = 𝑇 𝑛 − 4 + 1 + 3 ⇒ 𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 (4.3) Podemos notar que o valor de k incrementa a cada expansão, que é o comportamento experado, já que estamos sempre diminuindo a recorrência pelo fator de 1 (valor inicial de k). A ideia é perceber o comportamento da recorrência ao se aumentar o valor de k (diminuir a recorrência)! k
  • 30. Resolvendo recorrências por expansão de fatores. Receita de bolo! 4º) Analisando todas as iterações: 𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1) 𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 4.2 𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 4.3 k A cada expansão da recorrência, k assume um novo valor. Percebemos também que o valor constante que é somado a recorrência e indica a quantidade de multiplicações que teremos que realizar para encontrar a solução do problema (fatorial de n) é o mesmo valor de k em todas as iterações.
  • 31. Resolvendo recorrências por expansão de fatores. Receita de bolo! 4º) Analisando todas as iterações: 𝑇 𝑛 = 𝑇 𝑛 − 2 + 2 (4.1) 𝑇 𝑛 = 𝑇 𝑛 − 3 + 3 4.2 𝑇 𝑛 = 𝑇 𝑛 − 4 + 4 4.3 k Logo, depois de k expansões teremos: 𝑇 𝑛 = 𝑇 𝑛 − 𝑘 + 𝑘
  • 32. Resolvendo recorrências por expansão de fatores. Receita de bolo! 5º) Encontrar quando a expansão para. Precisamos pensar no caso base, que é o mesmo que pensar em quando T(n-k) nos retornará um valor. Olhando para o caso base, sabemos que teremos um valor de retorno e não uma nova recorrência quando n = 1. Para o nosso caso, n = (n-k) que é o valor de argumento da recorrência [T(n-k)] 𝑇 𝑛 = 𝑇 𝑛 − 𝑘 + 𝑘 (5.1) Logo precisamos saber quando n-k = 1, pois então teremos T(1) e já sabemos que isso é igual a 1. 𝑛 − 𝑘 = 1 ⇒ 𝑘 = 𝑛 − 1
  • 33. Resolvendo recorrências por expansão de fatores. Receita de bolo! 5º) Substituindo o valor de k encontrado (n-1) em 5.1 temos 𝑇 𝑛 = 𝑇 𝑛 − (𝑛 − 1) + 𝑛 − 1 = 𝑇 1 + 𝑛 − 1 Como sabemos que T(1) = 1, então 𝑇 𝑛 = 1 + 𝑛 − 1 𝑇 𝑛 = 𝑛
  • 34. Resolvendo recorrências por expansão de fatores. Receita de bolo! 6º) Definir o limite assintótico de T(n) Como encontramos que T(n) = n, então neste caso sabemos que o algoritmo fatorial de n recursivo é O(n), maior grau no polinômio encontrado. Na prática, depois de várias décadas de estudo, sabe-se que o resultado da relação de recorrência é suficiente para conhecer a complexidade do algoritmo, porém se quisermos realmente provar (e às vezes isso será necessário!), precisamos utilizar indução matemática, que é um método da matemática discreta que nos ensina como provar problemas matemáticos, entre eles relações de recorrência.
  • 35. Resolvendo recorrências por expansão de fatores. Receita de bolo! 6º) Definir o limite assintótico de T(n) Como encontramos que T(n) = n, então neste caso sabemos que o algoritmo fatorial de n recursivo é O(n), maior grau no polinômio encontrado. Na prática, depois de várias décadas de estudo, sabe-se que o resultado da relação de recorrência é suficiente para conhecer a complexidade do algoritmo, porém se quisermos realmente provar (e às vezes isso será necessário!), precisamos utilizar indução matemática, que é um método da matemática discreta que nos ensina como provar problemas matemáticos, entre eles relações de recorrência.
  • 36. Indução matemática Em uma linguagem bem simplificada. Você pode usar a indução matemática para provar uma expressão matemática quando: 1 – Sabe que ela é verdadeira para algum valor. 2 – Quer provar que ela é válida então para esse valor em relação a um fator de um (pode ser aumentar ou diminuir). Ou seja, quer provar que o próximo valor e os próximos valores depois deste também são verdadeiros.
  • 37. Indução matemática Características: 1 – O passo 1 do slide anterior é chamado de passo base. 2 – O passo 2 é o passo indutivo.
  • 38. Indução matemática Exemplo. Seja um teorema que tenha como parâmetro um número natural n. Provando que T é válido para todos os valores de n, provamos que: 1 – T é válido para n = 1 (eu tenho que saber que isto é verdade!); 2 – Para todo n > 1, se T é válido para n – 1, então T é válido para n (Se conseguirmos provar que n – 1 é válido (e isto implica em provar que n – 2, n – 3 e assim por diante também é válido), então podemos provar que n é verdadeiro. Esse é o passo indutivo.
  • 39. O que é uma prova? Em matemática, uma prova é uma argumentação precisa que procura convencer o leitor de que uma certa preposição, previamente enunciada está correta. Num sentindo mais informa, uma prova é um texto que ajuda o leitor a entender por que uma dada afirmação é verdadeira!
  • 40. Provando uma relação de recorrência por indução matemática Primeiro temos que provar que o passo base é verdadeiro. Para nossa equação de recorrência do problema do fatorial: 𝑇 𝑛 = 1 , 𝑠𝑒 𝑛 = 1 𝑇 𝑛 − 1 + 1 , 𝑝𝑎𝑟𝑎 𝑛 > 1 Logo primeiro queremos provar que T(1) = 1. Sabemos que T(1) é verdadeiro, pois quando n = 1, o algoritmo não realiza nenhuma multiplicação. Logo, o nosso caso base é verdadeiro!
  • 41. Provando uma relação de recorrência por indução matemática Agora supomos que T(k) = k (pois não sabemos quanto é realmente este valor antes de calcular todas as multiplicações. A variável n foi substituída por k, pois estamos generalizando para quaisquer valores n > 1, pois quando n = 1 já provamos ser verdadeiro). Para provar que T(k) = k é verdadeiro, precisamos provar que T(k + 1) = k + 1 também é verdadeiro. Se conseguirmos provar que T(k + 1) é verdadeiro, então T(k) também será verdadeiro, pois derivamos T(k+1) de T(k) e assim nosso passo indutivo seria verdadeiro e nossa relação de recorrência também.
  • 42. Provando uma relação de recorrência por indução matemática A ideia principal aqui é a seguinte. Vamos encontrar definir nossa hipótese de indução. A hipótese de indução é sempre nosso passo recursivo: 𝑇 𝑛 = 𝑇 𝑛 − 1 + 1 Vamos a partir da nossa hipótese de indução, determinar o valor de T(k + 1).
  • 43. Provando uma relação de recorrência por indução matemática 𝑇 𝑘 + 1 = 𝑇 (𝑘 + 1) − 1 + 1 = 𝑇 𝑘 + 1 Sempre, que queremos provar T(k+1), precisamos tentar deixá-lo em função de T(k), que é o valor que supomos no começo do exercício que queríamos provar. Supomos que T(k) = k, então vamos substituí-lo na expressão encontrada acima.
  • 44. Provando uma relação de recorrência por indução matemática Como supomos que T(k) = k no começo do exercícios, podemos então substituí-lo na expressão encontrada no slide anterior: 𝑇 𝑘 + 1 = 𝑇 𝑘 + 1 T(k + 1) = 𝑘 + 1 Note que é exatamente o que queríamos provar, pois lembre-se que no começo do exercício, supomos T(k) = k e queríamos provar que T(k+1) = k +1.
  • 45. Provando uma relação de recorrência por indução matemática Escrever uma prova de indução matemática sempre envolve: - Provar o caso base - Supor T(k) = k e tentar provar que T(k+1) = k+1 - Encontrar uma hipótese de indução, que é o nosso passo recursivo - Utilizar a hipótese de indução para encontrar T(k+1) em função de T(k) - Manipular T(k+1) para que ele seja k+1