Ho un compito a casa per una classe data / algoritmo di dati. Il compito è di prendere una matrice non ordinata di dimensione n (esempio: [-8, 3, 2, -3, 3, 1, -3, -5]), e noi abbiamo per usare un dividi e conquista l'approccio, w / ricorsione, per trovare la sottosequenza con il prodotto più grande.
È la stessa di questa domanda: link tranne che in sostituzione della somma, la mia domanda cerca un prodotto.
Capisco che un approccio D & C è desiderabile perché ha complessità temporale log(n)
(dimezzamento) invece di n^2
(ciclo nidificato). Quello su cui sono poco chiaro è: l'intera funzione dovrebbe essere una chiamata ricorsiva? O è come:
- Dividi a metà.
- Funzione ricorsiva per trovare i prodotti più grandi e più piccoli (bc neg * neg) della metà sinistra
- Lo stesso ma la metà destra
- Lo stesso ma per il "bordo" del punto medio e metà sinistra
- Lo stesso ma per il "bordo" del punto medio e della metà destra
- Confronta tutti i valori
Questo è fatto con if / else e allora chiamate ricorsive, o è la stessa funzione ricorsiva con se / else è al suo interno? C'è un modo metodico per provare ad affrontare questo programma? Mi sento molto perso.