1
resposta

teria alguma outra forma de fazer ?

mport 'package:dart_application_1/dart_application_1.dart' as dart_application_1;

void main(List arguments) { String resultado = informacoesDaFruta( nome: 'Maçã', peso: 35.52, diasDesdeColheita: 30, diasParaMadura: 20, ); print(resultado); }

String informacoesDaFruta ({required String nome, required double peso, required int diasDesdeColheita, required int diasParaMadura } ){

int diasQueFaltamParaMadura = diasParaMadura - diasDesdeColheita; bool isMadura = diasDesdeColheita >= diasParaMadura;

String maduraString=" "; if (isMadura != null && !isMadura){ maduraString=" Não está madura"; } " A $nome pesa $peso gramas, Ela foi colhida há $diasDesdeColheita, e ficara madura em $diasParaMadura dias. elá esta $isMadura ";

return " A $nome pesa $peso gramas, Ela foi colhida há $diasDesdeColheita, e ficara madura em $diasParaMadura dias. elá esta $isMadura. faltam $diasQueFaltamParaMadura para amadurecer ";

}

1 resposta

Olá, Erick! Tudo bem?

Pelo que entendi, você está buscando uma forma alternativa de implementar a função informacoesDaFruta em Dart, que atualmente está estruturada de forma não recursiva. Considerando que você está estudando funções recursivas, vamos pensar em como poderíamos aplicar esse conceito ao seu problema.

A função que você tem não é naturalmente propícia para recursão, pois ela basicamente calcula e retorna uma string com informações sobre a fruta. A recursão é mais útil em cenários onde a função precisa repetir um cálculo ou decompor um problema em partes menores, como na busca ou ordenação de dados, cálculos de fatorial, Fibonacci, entre outros.

Mas, para fins de exercício e para entender melhor a aplicação de recursão, podemos criar um cenário hipotético onde sua função poderia se beneficiar de recursão. Por exemplo, se quiséssemos calcular o peso acumulado de várias frutas ao longo de dias até que todas estejam maduras, poderíamos fazer algo assim:

void main() {
  List<Map<String, dynamic>> frutas = [
    {'nome': 'Maçã', 'peso': 35.52, 'diasDesdeColheita': 30, 'diasParaMadura': 20},
    {'nome': 'Banana', 'peso': 20.00, 'diasDesdeColheita': 10, 'diasParaMadura': 5},
    // Adicione mais frutas se necessário
  ];

  double pesoTotal = calcularPesoTotal(frutas, 0);
  print("Peso total das frutas maduras: $pesoTotal gramas");
}

double calcularPesoTotal(List<Map<String, dynamic>> frutas, int index) {
  if (index >= frutas.length) {
    return 0;
  }

  double pesoAtual = 0;
  if (frutas[index]['diasDesdeColheita'] >= frutas[index]['diasParaMadura']) {
    pesoAtual = frutas[index]['peso'];
  }

  return pesoAtual + calcularPesoTotal(frutas, index + 1);
}

Neste exemplo, usamos uma função recursiva calcularPesoTotal para iterar sobre uma lista de frutas e somar o peso das que estão maduras. A recursão ocorre ao chamar a mesma função com o próximo índice da lista até que todos os elementos sejam verificados.

Espero que esse exemplo te ajude a entender como você poderia aplicar recursão em diferentes contextos, mesmo que o problema original não seja o candidato mais óbvio para esse tipo de abordagem.

Um abraço e bons estudos.