gpt4 book ai didi

c++ - 在 C++ 中创建一个没有 x*x 的 square() 函数

转载 作者:可可西里 更新时间:2023-11-01 17:56:40 25 4
gpt4 key购买 nike

我正在自学 C++ 和 Bjarne Stroustrup 的书“Programming-Principles and Practices Using C++”。其中一个“试试这个”问这个:

在不使用乘法运算符的情况下实现 square();也就是说,通过重复加法来计算 x*x(开始一个变量结果为 0 并将 x 添加到它 x 次)。然后使用该 square() 运行某个版本的“第一个程序”。

基本上,我需要制作一个 square(int x) 函数,它会在不使用乘法运算符的情况下返回它的平方。我到目前为止有这个:

int square(int x)
{
int i = 0;
for(int counter = 0; counter < x; ++counter)
{
i = i + x;
}

return i;
}

但我想知道是否有更好的方法来做到这一点。上述功能有效,但我非常确定这不是最好的方法。有帮助吗?

最佳答案

Mats Petersson 甚至在我想到它之前就从我的脑海中偷走了这个想法。

#include <iostream>

template <typename T>
T square(T x) {
if(x < 0) x = T(0)-x;
T sum{0}, s{x};
while(s) {
if(s & 1) sum += x;
x <<= 1;
s >>= 1;
}
return sum;
}

int main() {
auto sq = square(80);
std::cout << sq << "\n";
}

关于c++ - 在 C++ 中创建一个没有 x*x 的 square() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com