Exercícios do Capítulo 7
valor = 500
juros = 0.075
for(i in 1:3){
valor = valor*(1+juros)
print(paste0("Em ",i," ano(s) teremos ",valor))
}
## [1] "Em 1 ano(s) teremos 537.5"
## [1] "Em 2 ano(s) teremos 577.8125"
## [1] "Em 3 ano(s) teremos 621.1484375"
# f(n) = f(n-1)*(1+juros)
# 1. Caso n não seja natural, retorne erro.
# 2. Se n=0, retorne 500;
# 3. Retorne investimento_rec(n-1)*(1+0.075)
investimento_rec = function(n){
if((n<0)||(n%%1 != 0)){
stop("n tem que ser um natural")
}
if(n == 0) return(500)
return(investimento_rec(n-1)*(1+0.075))
}
investimento_rec(3)
## [1] 621.1484
investimento_rec = function(i,j,n){
if((i<0)) stop("i tem que ser positivo")
if((n<0)||(n%%1 != 0)) stop("n tem que ser um natural")
if(j>1 || j < 0) stop("j é um número entre 0 e 1")
if(n==0) return(i)
return(investimento_rec(i,j,n-1)*(1+j))
}
investimento_rec(1000,7.5/100,2)
## [1] 1155.625
paste0("Com investimento de 1000 reais com juros de 7.5% ao ano em 2 anos temos R$:",investimento_rec(1000,7.5/100,2)," Já com 10% ao ano temos R$:",investimento_rec(1000,10/100,2)," Uma diferença de R$:",investimento_rec(1000,10/100,2) -investimento_rec(1000,7.5/100,2) )
## [1] "Com investimento de 1000 reais com juros de 7.5% ao ano em 2 anos temos R$:1155.625 Já com 10% ao ano temos R$:1210 Uma diferença de R$:54.375"
valor = 1200
juros = 0.02
pagamento = 150
for(i in 1:3){
valor = valor*(1+juros) - pagamento
print(paste0("Em ",i," ano(s) teremos ",valor))
}
## [1] "Em 1 ano(s) teremos 1074"
## [1] "Em 2 ano(s) teremos 945.48"
## [1] "Em 3 ano(s) teremos 814.3896"
# f(n) = f(n-1)*(1+juros) - pagamento
# 1. Caso n não seja natural, retorne erro.
# 2. Se n=0 retorne 1200;
# 3. Faça d = pagamento_rec(n-1)*(1+0.02) - 150;
# 4. Se d<0, retorne 0. Senão, retorne d.
pagamento_rec = function(n){
if((n<0)||(n%%1 != 0)){
stop("n tem que ser um natural")
}
if(n==0) return(1200)
d = pagamento_rec(n-1)*(1+0.02) - 150
if(d < 0) return(0)
else return(d)
}
pagamento_rec(3)
## [1] 814.3896
pagamento_rec(8)
## [1] 118.5459
pagamento_rec(9)
## [1] 0
pagamento_rec = function(v,j,k,n){
if((v<0)) stop("v tem que ser positivo")
if(j>1 || j < 0) stop("j é um número entre 0 e 1")
if((k<0)) stop("k tem que ser positivo")
if((n<0)||(n%%1 != 0)) stop("n tem que ser um natural")
if(n==0) return(v)
d = pagamento_rec(v,j,k,n-1)*(1+j) - k
if(d < 0) return(0)
else return(d)
}
pagamento_rec(1200,2/100,150,10)
## [1] 0
pagamento_rec(1200,2/100,120,10)
## [1] 148.8268
# 1. Caso j não esteja entre 0 e 1, retorne erro.
# 1. Caso k não seja positivo, retorne erro.
# 2. Se v<=0, retorne 0.
# 3. Retorne 1 + quitamento(v*(1+j)-k,j,k)
quitamento = function(v,j,k){
if(j>1 || j < 0) stop("j é um número entre 0 e 1")
if((k<0)) stop("k tem que ser positivo")
if(v<=0) return(0)
return(1 + quitamento(v*(1+j)-k,j,k))
}
quitamento(1200,2/100,120)
## [1] 12
quitamento(1200,2/100,150)
## [1] 9
quitamento(1200,2/100,200)
## [1] 7
mdc_rec = function(n,m){
if((n<0)||(n%%1 != 0)) stop("n tem que ser um natural")
if((m<0)||(m%%1 != 0)) stop("m tem que ser um natural")
if(m<n) {
maior = n
menor = m
}
else{
maior = m
menor = n
}
if(menor == 0) return(maior)
return(mdc_rec(menor,maior%%menor))
}
mdc_rec(125,325)
## [1] 25
mdc_rec(2829,861)
## [1] 123
mdc_rec(299,217)
## [1] 1
crescimento_exp_rec = function(n){
if(n==1)
return(list(0.1,0.1))
pagamento_vespera = crescimento_exp_rec(n-1)
pagamento = list(2*pagamento_vespera[[1]],pagamento_vespera[[2]]+2*pagamento_vespera[[1]])
return(pagamento)
}
crescimento_exp_rec(20)
## [[1]]
## [1] 52428.8
##
## [[2]]
## [1] 104857.5
crescimento_exp_rec(22)
## [[1]]
## [1] 209715.2
##
## [[2]]
## [1] 419430.3
- (Questão Desafio)
permuta_rec = function(vetor){
if(length(vetor) == 1){
return(list(vetor))
} else {
permutacoes = c()
for(i in 1:length(vetor)){
letra = vetor[i]
letras = vetor[-i]
permuta_letras = permuta_rec(letras)
for(elemento in permuta_letras){
frase = c(letra, elemento)
permutacoes[[length(permutacoes)+1]] = frase
}
}
return(permutacoes)
}
}
permuta_rec(c("a","b","c"))
## [[1]]
## [1] "a" "b" "c"
##
## [[2]]
## [1] "a" "c" "b"
##
## [[3]]
## [1] "b" "a" "c"
##
## [[4]]
## [1] "b" "c" "a"
##
## [[5]]
## [1] "c" "a" "b"
##
## [[6]]
## [1] "c" "b" "a"
permuta_rec(c(1,2,3))
## [[1]]
## [1] 1 2 3
##
## [[2]]
## [1] 1 3 2
##
## [[3]]
## [1] 2 1 3
##
## [[4]]
## [1] 2 3 1
##
## [[5]]
## [1] 3 1 2
##
## [[6]]
## [1] 3 2 1