Sono un C++ autodidatta e il libro "Princìpi di programmazione e pratiche con C++" di Bjarne Stroustrup. Uno dei "Try This" richiede questo:Creazione di una funzione square() senza x * x in C++
Implementare square() senza utilizzare l'operatore di moltiplicazione; cioè, esegui x * x aggiungendo ripetutamente (avvia un risultato variabile a 0 e aggiungi x ad esso x volte). Quindi esegui una versione del "primo programma" usando quel quadrato().
Fondamentalmente, ho bisogno di creare una funzione square (int x) che restituisca il quadrato di esso senza utilizzare l'operatore di moltiplicazione. Finora ho questo:
int square(int x)
{
int i = 0;
for(int counter = 0; counter < x; ++counter)
{
i = i + x;
}
return i;
}
Ma mi stavo chiedendo se ci fosse un modo migliore per farlo. La funzione sopra funziona, ma sono sicuro che non è il modo migliore per farlo. Qualsiasi aiuto?
È possibile utilizzare turni e si preoccupano solo i bit che sono impostati a sinistra-mano-lato. Questo è il modo in cui il multiplo binario generico funziona. –
http://stackoverflow.com/questions/2776211/how-can-i-multiply-and-divide-using-only-bit-shifting-and-adding Si può anche usare la funzione di libreria standard pow e il quadrato x. –
Questa implementazione è chiara ed è esattamente il metodo con il quale la domanda a cui hai fatto riferimento per chiederti di farlo. "Migliore" è un termine un po 'ambiguo. – moreON