c++ - 定义一个自制的 pow 函数作为练习

标签 c++ pow sqrt

在我的 IT 类(class)中,我得到了这个任务:

Write function where user puts integer m (m>1) and non-negative n and the function returns std::pow(n, 1.0/m). You cant use any library.

也就是说,我必须使用 pow 函数……但我不能使用它。 因为它不是 2^2 或 2^7,所以我不能使用简单的 for 循环。 我试过做任何事情,比如加法、乘法,但在任何地方都行不通。

有什么想法吗?

仅供引用: 这不是我的家庭作业,老师只是给我这个任务来学习一些东西。

最佳答案

std::pow(n, 1.0/m)n 的第 m 根。您可以找到有用的 algorithm of how to implement it在维基百科上:

  1. 初步猜测 x0
  2. 设置 x = 1.0/m * [ (n-1)*x + n/pow(x,m-1) ]1
  3. 重复第 2 步,直到 x 变化很小或达到最大值。

1) 显然,您需要为整数 y 定义 pow(x,y),这很简单。

关于c++ - 定义一个自制的 pow 函数作为练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457732/

相关文章:

c++ - llvm builder 向基本 block 添加终止符

c++ - C++语句 'delete [] Q;'的Big-O是O(1)还是O(n)?

c++ - 从winapi c项目中的专用dll加载图像资源

c++ - pow(-0.857487, 1.5) 返回 NaN - 替代方案?

scala - 为 Scala 创建 `**` 幂运算符?

c++ - C++ 中非常快速的近似对数(自然对数)函数?

sympy - 在 Sympy 中定义符号的范围

c++ - 使用 XMFLOAT3 和 XMVECTOR 的内存异常

c++ - pow(NAN) 非常慢

python - 为什么 Python 给出平方根的 "wrong"答案? Python 2 中的整数除法是什么?