Metodo ricorsivo

di Anonimizzato27575 il
2 risposte
Ciao a tutti, volevo sapere se la mia risposta a questo quesito fosse corretta.
Avendo questo codice:
public static int metodo(int n, int k){
int result;
if (k == 0 || k == n)
result=1;
else
result=metodo(n-1, k-1) + metodo(n-1, k);
return result:
}

e supponendo di dare a n il valore 3 e k 2, il metodo stampa 3?
Il mio ragionamento è stato questo. Con 3 e 2 cado nel secondo caso cioè
metodo(2,1) + metodo(2,2).
Il secondo metodo ha valore 1 (PRIMO CASO), il secondo invece viene ancora diviso in:
metodo(1,0) + metodo( 1,1) che ha entrambi come valore 1 (PRIMO CASO).
Valore finale: 3?

2 Risposte

  • alamo ha scritto:


    e supponendo di dare a n il valore 3 e k 2, il metodo stampa 3?
    Il mio ragionamento è stato questo. Con 3 e 2 cado nel secondo caso cioè
    metodo(2,1) + metodo(2,2).
    Il secondo metodo ha valore 1 (PRIMO CASO), il secondo invece viene ancora diviso in:
    metodo(1,0) + metodo( 1,1) che ha entrambi come valore 1 (PRIMO CASO).
    Valore finale: 3?
    Sì il risultato finale è 3.

    Come "esercizio", aggiungi un parametro es. "level" (dall'esterno passi 0 e poi ricorsivamente passi level+1) e stampa in maniera "indentata" (grazie al level) i parametri e il risultato e .... "vedi" visivamente l'annidamento delle chiamate
Devi accedere o registrarti per scrivere nel forum
2 risposte