A2 Lista3
A2 Lista3
A2 Lista3
Lista de Exercícios 3
1. Faça um algoritmo de uma função string recursiva que receba como parâmetro uma
string e devolva uma string na qual todas as letras sejam minúsculas.
2. Faça um algoritmo de uma função inteira recursiva que receba um parâmetro inteiro
e retorne um inteiro que seja o reverso do inteiro passado como parâmetro.
Exemplo: Se o parâmetro de entrada é 54321, então o número a ser devolvido deve
ser 12345.
4. Faça o algoritmo de uma função inteira recursiva que calcule o máximo divisor comum
(MDC) de dois números inteiros estritamente positivos transmitidos a ela como pa-
râmetros. Para o cálculo do MDC utilize o algoritmo de Euclides: MDC(a, a) = a,
e sendo a > b, positivos, e r o resto da divisão inteira de a por b, temos que
MDC(a, b) = MDC(b, r).
5. Faça o algoritmo de uma função inteira recursiva que receba dois parâmetros inteiros
positivos a e b (sendo que b representa apenas 1 único dígito) e retorne a quantidade
de vezes que o dígito b aparece dentro do número a. Caso seja necessário, utilize o
valor −1 como flag indicador de erro dos valores de entrada.
6. Faça um algoritmo de uma função string recursiva que receba como parâmetros um
vetor de strings e o seu tamanho, e retorne a menor string (lexicograficamente, alfa-
beticamente falando). Considere que letras maiúsculas e minúsculas são diferentes.
Exemplo:
parâmetro = [ “José” , “Eliana” , “Mariana” , “Lucas” , “Thiago” ] , 5
retorno = “Eliana”
7. Faça o algoritmo de uma função recursiva que recebanum valor inteiro nocomo argu-
Pk
mento e escreva, na saída, os valores dos somatórios i=1 | 0 ≤ k ≤ n para cada
valor de k no intervalo, do menor para o maior. O valor inteiro de retorno da fun-
ção é o do proprio somatório descrito. Se possível, faça com que as vírgulas sejam
corretamente escritas pela função apenas entre os valores inteiros.
Exemplo: Se for passado o valor 5 à função, serão escritos os valores {0, 1, 3,
6, 10, 15}, pois esses valores são obtidos das somas {0, 0+1, 0+1+2, 0+1+2+3,
0+1+2+3+4, 0+1+2+3+4+5}.
8. Faça um algoritmo de uma função A(m, n), definida para todos os inteiros não
negativos m e n, como segue:
A(0, n) = n + 1
A(m, 0) = A(m − 1, 1)
A(m, n) = A(m − 1, A(m, n − 1))
1
Em seguida mostre como fica a árvore de ativações de A(5, 4) anotando (com núme-
ros), na própria árvore, em que ordem ela foi construída.
9. Faça o algoritmo de uma função inteira recursiva que receba um número inteiro
representando um valor numérico na base decimal e devolva o inteiro que contenha
o mesmo valor escrito na base octal.
10. Faça o algoritmo de uma função string recursiva que receba um número inteiro
representando um valor numérico na base decimal e devolva a string que contenha
o mesmo valor escrito na base hexadecimal.
11. Faça o algoritmo de uma função inteira recursiva que receba uma string represen-
tando um valor numérico na base decimal e devolva o inteiro que contenha o mesmo
valor escrito na base binária.
12. Faça o algoritmo de uma função inteira recursiva que receba um inteiro representando
um valor numérico na base binária e devolva o inteiro que contenha o mesmo valor
escrito na base decimal. Em caso de erro, retorne -999999.
13. Faça o algoritmo de uma função inteira recursiva que receba uma string represen-
tando um valor numérico na base octal e devolva o inteiro que contenha o mesmo
valor escrito na base decimal. Em caso de erro, retorne -999999.
14. Faça o algoritmo de uma função string recursiva que receba uma string representando
um valor numérico na base hexadecimal e devolva a string que contenha o mesmo
valor escrito na base decimal. Em caso de erro, retorne a string vazia.
15. Analise a função abaixo e diga que valor é impresso na saída quando for executada
a chamada F (a, 6) sendo a = {0, 1, 2, 3, 4, 5}.
tipos
Vet = vetor[0..5] de inteiro
função F(ref a: Vet; n: inteiro): inteiro
início
se n ≤ 0 então
retorne 1
fim se
retorne a[n − 1] × F (a, n − 2) + 1
fim função