#include int multiplicaIter (int a, int b) { int soma = 0; int i; int maior = (a > b) ? a : b; int menor = (a > b) ? b : a; for(i = 0; i < menor; i++) soma += maior; return soma; } /* Tente alterar a função abaixo para incluir a otimização da função acima */ int multiplicaRec (int a, int b) { if ((a == 0) || (b == 0)) return 0; if (b == 1) return a; return a + multiplicaRec (a, b-1); } int busca (int v[], int n, int e) { int i; for (i = 0; i < n; i++) { if (v[i] == e) return i; } /* Outro valor válido seria n, pq? */ return -1; } int buscaRec (int v[], int n, int e) { if (n == 0) return -1; if (v[n - 1] == e) { return n - 1; } return buscaRec (v, n - 1, e); } /* n > 0 */ int maximo (int v[], int n) { int maior, ultimo; if (n == 1) return v[n - 1]; maior = maximo (v, n - 1); ultimo = v[n - 1]; return ultimo > maior ? ultimo : maior; } int somaVetor (int v[], int n) { int atual, soma; if (n == 0) return 0; if (n == 1) return v[n - 1]; atual = v[n - 1]; soma = somaVetor (v, n - 1); return atual + soma; } int tamanhoString (char str[]) { int i; /* Note que a solução abaixo ainda conta '\n'. Dependendo do caso pode não ser o desejado */ for (i = 0; str[i] != '\0'; i++); return i; } /* Bombas estão marcadas com -1 */ void preencheMatriz(int m[100][100], int l, int c){ int i, j, nbombas; for (i = 0; i < l; i++) { for (j = 0; j < c; j++) { if (m[i][j] != -1) { nbombas = 0; if (j > 0 && m[i][j - 1] == -1) nbombas++; if (j < c - 1 && m[i][j + 1] == -1) nbombas++; if (i > 0 && m[i - 1][j] == -1) nbombas++; if (i < l - 1 && m[i + 1][j] == -1) nbombas++; m[i][j] = nbombas; } } } }