在我的 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在维基百科上:
- 初步猜测
x0
- 设置
x = 1.0/m * [ (n-1)*x + n/pow(x,m-1) ]
1 - 重复第 2 步,直到
x
变化很小或达到最大值。
1) 显然,您需要为整数 y
定义 pow(x,y)
,这很简单。
关于c++ - 定义一个自制的 pow 函数作为练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457732/