Logica de programação linguagem c recurção

346 palavras 2 páginas
Lista de Exercícios 7 - Prática de Programação III (RECURSÃO) Aluno: _____________ Data__/__/2012 Professor: Samuel de Moraes Lemes 1. Escrever um algoritmo, utilizando um subalgoritmo recursivo, para calcular a soma dos 'n' primeiros inteiros positivos, sendo 'n' um valor fornecido pelo usuário. 2. Escrever um algoritmo, utilizando um subalgoritmo recursivo, que eleve um número inteiro qualquer a uma potência. Devem ser fornecidos o número e a potência. 3. Faça uma função recursiva que receba um vetor de 100 posições e retorne o somatório dos elementos pares (ou ímpares) do vetor. 4. A função abaixo promete encontrar o valor de um elemento máximo de v[0..n-1]. A função cumpre a promessa? Comente. int maxi (int n, int v[]) { int j, m = v[0]; for (j = 1; j < n; ++j) if (v[j-1] < v[j]) m = v[j]; return m; }

5. Critique a seguinte função recursiva: int XX (int n) { if (n == 0) return 0; else return XX (n/3+1) + n;

6. Qual o resultado da execução do programa abaixo? int ff (int n) { if (n == 1) return 1; if (n % 2 == 0) return ff (n/2); return ff ((n-1)/2) + ff ((n+1)/2); } int main (void) { printf ("%d", ff (7)); return EXIT_SUCCESS; }

7. Qual o valor de X (4)? int X (int n) { if (n == 1 || n == 2) return n; else return X (n-1) + n * X (n-2); }

Um exemplo Considere o seguinte problema: Determinar o valor de um elemento máximo de um vetor v[0 .. n1] . É claro que o problema só faz sentido se o vetor não é vazio, ou seja, se n ≥ 1. Examine uma tradicional solução iterativa do problema: int maximo (int n, int v[]) { int j, x; x = v[0]; for (j = 1; j < n; j += 1) if (x < v[j]) x = v[j]; return x; }

8. Considere a função iterativa maximo acima. Faz sentido trocar "x = v[0]" por "x = 0", como fazem alguns programadores descuidados? Faz sentido trocar "x = v[0]" por "x = INT_MIN"? Faz sentido trocar "x < v[j]" por

Relacionados