Jestem samokształceniem C++ i książką "Programowanie - zasady i praktyki przy użyciu C++" autorstwa Bjarne Stroustrup. Jeden z "Spróbuj tego" pyta:Tworzenie funkcji kwadratowej() bez x * x w C++
Kwadrat narzędzia() bez użycia operatora mnożenia; to znaczy, wykonaj x * x, powtarzając dodawanie (rozpocznij zmienny wynik na 0 i dodaj x do niego x razy). Następnie uruchom pewną wersję "pierwszego programu" za pomocą tego kwadratu().
Zasadniczo potrzebuję funkcji kwadratowej (int x), która zwróci jej kwadrat bez użycia operatora mnożenia. Do tej pory mam to:
int square(int x)
{
int i = 0;
for(int counter = 0; counter < x; ++counter)
{
i = i + x;
}
return i;
}
Ale zastanawiałem się, czy istnieje lepszy sposób, aby to zrobić. Powyższa funkcja działa, ale jestem pewien, że nie jest to najlepsza metoda. Jakaś pomoc?
Można użyć przesunięcia i dbają tylko o bity, które są ustawione w lewej-stronie. Tak działa ogólne mnożenie binarne. –
http://stackoverflow.com/questions/2776211/how-can-i-multiply-and-divide-using-only-bit-shifting-and-adding Możesz również użyć funkcji standardowej biblioteki pow oraz kwadratu x. –
Ta implementacja jest jasna i jest dokładnie tą metodą, o którą prosiłeś, aby to zrobić. "Najlepszy" to termin niejasny. – moreON