Ho bisogno di scrivere un metodo ricorsivo usando Java chiamato power che prende un doppio x e un intero n e che restituisce x^n. Ecco cosa ho finora.Metodo ricorsivo per x^n ottimizzato per quando n è pari
public static double power(double x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
else
return x * (power(x, n-1));
}
Questo codice funziona come previsto. Tuttavia, sto cercando di fare il miglio supplementare ed eseguire il seguente esercizio opzionale:
"Sfida opzionale: è possibile rendere questo metodo più efficiente, quando n è pari, utilizzando x^n = (x^(n/2))^2."
Non sono sicuro di come implementare quell'ultima formula quando n è pari. Non penso di poter usare la ricorsione per quello. Ho cercato di implementare quanto segue, ma non funziona anche perché non riesco a raddoppiare la potenza di un int.
if (n%2 == 0)
return (x^(n/2))^2;
Qualcuno può indicarmi la giusta direzione? Mi sento come se mi mancasse qualcosa di ovvio. Tutto l'aiuto è apprezzato.
Ti ho votato solo per essere uno studente che ha affrontato un problema da solo e ha mostrato un buon codice. Molto bene. Suggerimento: pensa a come incorporare una chiamata ricorsiva nel tuo caso di potenza pari e lo avrai. – duffymo
Grazie! Molto apprezzato! –
La notazione della domanda ti confonde. In Java, '^' significa un XOR bit a bit. Nella notazione quasi-matematica, 'x^2' significa" x alla seconda potenza ". Sì, hai già una risposta, ma volevo rendere esplicite le notazioni combattive. – msw