Salve, sto cominciando a trattare alcuni esercizi che hanno come argomento l'utilizzo del metodo ricorsivo per essere svolti. Prendendo come esempio quelli del calcolo del fattoriale e della serie di Fibonacci, ho capito come svolgere altri simili, ma non capisco come usare il metodo ricorsivo per altre tipologia di esercizi dove non riesco a trovare un possibile caso base.
Uno degli esercizi è quello sul "percorso più redditizio":
ho una matrice di numeri che rappresentano il guadagno; quindi io dovrei cercare di raggiungere,partendo dalla posizione (0,0), la posizione(i,j) in basso a destra cercando di trovare il percorso con più guadagno e muovendosi soltanto in giù e a destra. Il codice scritto fin'ora è questo:
#include <stdio.h>
#define ROWS 4
#define COLUMNS 4
void printArray(int a[][COLUMNS]);
//int guadagno(int a[][COLUMNS], int i, int j);
//int max(int a, int b);
int main(void) {
int a[][COLUMNS] = {{1,9,5,4}, {7,6,7,3}, {8,5,4,8},{5,6,4,8}};
printArray(a);
//printf("malloppo = %d\n", guadagno(a, ROWS-1, COLUMNS-1));
}
//int guadagno(int a[][COLUMNS], int i, int j) {}
//int max(int a, int b) {}
void printArray(int a[][COLUMNS]) {
for (size_t i=0; i<ROWS; i++) {
for (size_t j=0; j<COLUMNS; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
Dovrei sviluppare la funzione ''guadagno'' con il metodo ricorsivo e con la funzione max per scegliere di volta in volta il numero più grande. Vorrei capire bene come usare al meglio il metodo ricorsivo più in generale anche per svolgere altri esercizi. Grazie per la disponibilità.