Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 3 Recursa˜o (1) Explique com suas pro´prias palavras o que e´ recursa˜o; (2) Escreva uma func¸a˜o que fac¸a a soma de dois inteiros a + b, de forma recur- siva, retornando um inteiro como resultado. Utilize o seguinte proto´tipo: int soma(int,int); (3) Escreva uma func¸a˜o que fac¸a a subtrac¸a˜o de dois inteiros a − b, de forma recursiva, retornando um inteiro como resultado. Utilize o seguinte proto´tipo: int subtracao(int,int); (4) Escreva uma func¸a˜o que fac¸a a multiplicac¸a˜o de dois inteiros a× b, de forma recursiva, retornando um inteiro como resultado. Utilize o seguinte proto´tipo: int multiplicacao(int,int); (5) Escreva uma func¸a˜o que ca´lcule o piso da divisa˜o de dois inteiros ba b c, de forma recursiva, retornando um inteiro como resultado. Utilize o seguinte proto´tipo: int divisao(int,int); (6) Escreva uma func¸a˜o recursiva que retorne um inteiro representando o resto da divisa˜o de dois inteiros a b . Utilize o seguinte proto´tipo: int resto(int,int); (7) Escreva uma func¸a˜o recursiva que retorne o ma´ximo divisor comum entre dois inteiros. Utilize o seguinte proto´tipo: int mdc(int,int); (8) Escreva uma func¸a˜o recursiva que retorne o ma´ximo elemento de um vetor. A func¸a˜o deve receber um vetor de inteiros e um inteiro representando o indice do u´ltimo elemento do respectivo vetor. Utilize o seguinte proto´tipo: int max(int [],int); (9) Escreva uma func¸a˜o recursiva que retorne o mı´nimo elemento de um vetor. A func¸a˜o deve receber um vetor de inteiros e um inteiro representando o indice do u´ltimo elemento do respectivo vetor. Utilize o seguinte proto´tipo: int min(int [],int); (10) Escreva uma func¸a˜o recursiva que retorne a me´dia de um vetor. A func¸a˜o deve receber um vetor de nu´meros reais, um inteiro representando o indice do u´ltimo elemento do respectivo vetor e um inteiro representando a quantidade de elementos desse vetor. Utilize o seguinte proto´tipo: float media(float [],int,int); Pa´gina 1 de 3 Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 3 (11) Escreva uma func¸a˜o recursiva que retorne o fatorial de um nu´mero inteiro. Utilize o seguinte proto´tipo: int fatorial(int); (12) Escreva uma func¸a˜o recursiva que receba um inteiro n e ca´lcule o seguinte somato´rio ∑n i=1 i. Utilize o seguinte proto´tipo: int somatorio(int); (13) Escreva uma func¸a˜o recursiva que receba um inteiro n e ca´lcule o blog2 nc, ou seja, o piso do logaritmo de n na base 2. Utilize o seguinte proto´tipo: int log2(int); (14) Escreva uma func¸a˜o recursiva que fac¸a a busca sequencial em um vetor. A func¸a˜o deve receber um vetor inteiro, um inteiro representando o indice do u´ltimo elemento desse vetor e um inteiro correpondente ao valor que deve ser localizado no vetor. Se o elemento for encontrado a func¸a˜o retorna 1, sena˜o retorna 0. Utilize o seguinte proto´tipo: int busca sequencial(int [], int, int); (15) Escreva uma func¸a˜o recursiva que fac¸a a busca bina´ria em um vetor. A func¸a˜o deve receber um vetor inteiro, um inteiro representando o indice do primeiro elemento desse vetor, um inteiro representando o indice do u´ltimo ele- mento desse vetor e um inteiro correpondente ao valor que deve ser localizado no vetor. Se o elemento for encontrado a func¸a˜o retorna 1, sena˜o retorna 0. Utilize o seguinte proto´tipo: int busca binaria(int [], int, int, int); (16) Escreva uma func¸a˜o recursiva que ordene um vetor inteiro de forma na˜o decrescente utilizando o algoritmo quicksort. A func¸a˜o deve receber um vetor inteiro, um inteiro representando o indice do primeiro elemento desse vetor e um inteiro representando o indice de seu u´ltimo elemento. A func¸a˜o deve modificar o vetor recebido, e portanto na˜o sera´ necessa´rio retornar nenhum valor. Utilize o seguinte proto´tipo: void quicksort(int [], int, int); (17) Escreva uma func¸a˜o recursiva para calcular ( n k ) , dado que ( n k ) = ( n−1 k ) + ( n−1 k−1 ) ,( m m ) = 1 e ( m 1 ) = m. Sua func¸a˜o deve receber dois inteiros n e k, e deve retornar um inteiro. Utilize o seguinte proto´tipo: int binomio(int, int); (18) Escreva uma func¸a˜o recursiva para calcular a soma dos d´ıgitos de um inteiro positivo. Por exemplo, a soma dos d´ıgitos de 345 e´ 12. Sua func¸a˜o recebe um inteiro e retorna a respectiva soma, tambe´m no formato inteiro. Utilize o seguinte proto´tipo: int digitos(int); Pa´gina 2 de 3 Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 3 (19) Escreva uma func¸a˜o recursiva para determinar se os elementos de um ve- tor inteiro formam um palindromo. Sua func¸a˜o recebe um vetor inteiro, um inteiro representando o indice do primeiro elemento do referido vetor e um in- teiro representando o indice do u´ltimo elemento do mesmo vetor. Exemplo, v = [1, 20, 30, 20, 1] e´ palindromo (retornar 1) e w = [20, 30, 31, 20] na˜o e´ (retornar 0). Utilize o seguinte proto´tipo: int palindromo(int [], int, int); (20) Escreva uma func¸a˜o recursiva que resolva o problema “Torres de Hanoi”. Inicialmente temos 5 discos de diaˆmetro diferentes na estaca A. O problema consiste em mover os cinco discos da estaca A para C, utilizando a estaca B como auxiliar. As regras sa˜o as seguintes: • apenas o disco do topo de uma estaca pode ser movido • nunca um disco de diaˆmetro maior pode ficar sobre um de diaˆmetro menor Pa´gina 3 de 3
Compartilhar