Come trovare il grande tempo di esecuzione se la funzione di ricorsione ha diversi casi di ricorsione con diversa frazione di N?

cs.stackexchange https://cs.stackexchange.com/questions/105579

Domanda

Come trovare il grande tempo di esecuzione se la funzione di ricorsione ha diversi casi di ricorsione con diversa frazione di N?

Se ho una funzione ricorsiva come questa per esempio (questo è solo un esempio, non è una cosa reale, dimostra solo la mia domanda):

someFunction(n){
  base case:
    return 0
  if (some case)
    return someFunction(3n/4)
  else if (some other cases)
    return someFunction(n/4)
}

Come possiamo vedere, la ricorsione si chiama in casi diversi e in casi diversi, la N è frazionata per valore diverso, come posso scrivere la formula ricorsiva per scoprire il tempo di esecuzione?

È la formula qualcosa come:

T(n) = T(3n/4)?
T(n) = T(n/4)?
T(n) = T(3n/4) + T(n/4)?
T(n) = (Probability of first case)*T(3n/4) + (Probability of first case)*T(n/4)?

E se non avessi idea di quale sia la mia probabilità per ogni caso?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top