- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在某个网站上看到的面试问题。
有人提到,答案涉及形成 log2() 的递归,如下所示:
double log2(double x )
{
if ( x<=2 ) return 1;
if ( IsSqureNum(x) )
return log2(sqrt(x) ) * 2;
return log2( sqrt(x) ) * 2 + 1; // Why the plus one here.
}
至于重复,显然+1是错误的。此外,基本情况也是错误的。有谁知道更好的答案吗?log() 和 log10() 在 C 中实际是如何实现的。
最佳答案
也许我已经找到了面试官正在寻找的确切答案。就我而言,我想说在面试压力下得出这一点有点困难。这个想法是,假设你想找到 log2(13)
,你可以知道它在3到4之间。另外3 = log2(8) and 4 = log2(16)
,
根据对数的性质,我们知道log( sqrt( (8*16) ) = (log(8) + log(16))/2 = (3+4)/2 = 3.5
现在,sqrt(8*16) = 11.3137
和log2(11.3137) = 3.5
。自 11.3137<13
,我们知道我们想要的 log2(13) 将位于 3.5 和 4 之间,我们继续找到它。很容易注意到,这有一个二分搜索解决方案,当我们的值收敛到 log2()
的值时,我们迭代到一个点。我们希望找到。代码如下:
double Log2(double val)
{
int lox,hix;
double rval, lval;
hix = 0;
while((1<<hix)<val)
hix++;
lox =hix-1;
lval = (1<<lox) ;
rval = (1<<hix);
double lo=lox,hi=hix;
// cout<<lox<<" "<<hix<<endl;
//cout<<lval<<" "<<rval;
while( fabs(lval-val)>1e-7)
{
double mid = (lo+hi)/2;
double midValue = sqrt(lval*rval);
if ( midValue > val)
{
hi = mid;
rval = midValue;
}
else{
lo=mid;
lval = midValue;
}
}
return lo;
}
关于logarithm - 使用 sqrt() 查找 log2(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701023/
我有两个分数列表; 说 A = [ 1/212, 5/212, 3/212, ... ] 和 B = [ 4/143, 7/143, 2/143, ... ] . 如果我们定义 A' = a[0] *
我有两个分数列表; 说 A = [ 1/212, 5/212, 3/212, ... ] 和 B = [ 4/143, 7/143, 2/143, ... ] . 如果我们定义 A' = a[0] *
我已经使用查找表和低阶多项式近似实现了定点 log2 函数,但对整个 32 位定点范围 [-1,+1) 的准确度不太满意。输入格式为 s0.31,输出格式为 s15.16。 我在这里发布这个问题,以便
以下示例来自 here ,和here我试过这个: log2(x) := log(x) / log(2); log2(8), float; 但这并没有给出 3,而是得到 log(8)/log(2)。 最
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
请原谅,我的数学一直很差,现在正尝试通过编码来学习一些 Python(以及一些数学)。 我有这个: import numpy as np import matplotlib.pyplot as plt
我有一个二维数组,其中每个元素都是一个傅立叶变换。我想“对数地”分割变换。例如,让我们将这些数组中的一个命名为 a : a = np.arange(0, 512) # I want to split
这是我在某个网站上看到的面试问题。 有人提到,答案涉及形成 log2() 的递归,如下所示: double log2(double x ) { if ( x1e-7) { do
我有一个数据文件,我正在从中创建直方图。 数据文件是: -0.1 0 0 JANE 1 1 1 BILL 2 2 1 BILL 1 3 1 BILL 6 4 0 JANE
我正在尝试优化一个音频算法,它必须在每个步骤中计算如下两种算法。现在我已经读到,没有在多项式时间内运行的对数算法。我的问题是,通过查找表计算所有对数是否有意义,因为它们总是相同的,尽管存在大量内存访问
math.exp() 不适用于复数: >>> math.exp (math.pi*1j) Traceback (most recent call last): File "", line 1, i
随着时间的推移,我有一堆测量值,我想在 R 中绘制它们。这是我的数据示例。对于 4 个时间点,我有 6 个测量值: values <- c (1012.0, 1644.9, 837.0, 1200.9
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我有一些数据绘制在半对数图上(log-lin 样式,在 y 轴上具有对数刻度)。有没有办法将 y 轴刻度标签从实际值更改为对数值? 例如,考虑以下代码: import matplotlib.pyplo
我找不到这个问题的确切答案,所以我把它贴在这里:如果我有一个整数范围,我想以相等的对数距离计算该范围内的“N”个数字。 这是一个示例代码,用于查找相等的“非对数”距离(或多或少)的数字: const
我一直在学习 Python 2.5.4,我有以下问题需要解决: "编写一个程序,计算从 2 到某个数 n 的所有素数的对数和,并打印出素数的对数和、数 n 以及这两个量的比值。测试这适用于不同的 n
是否可以像下图那样使用对数刻度的颜色条级别? 这是一些可以实现的示例代码: import matplotlib.pyplot as plt import numpy as np from matplo
从这篇非常好的帖子开始 Logarithmic scale in Java FX 2 我已经更改了这个类以获得 Y 轴上的对数刻度,并且它工作正常。我唯一的问题是水平网格线很少,比例总是从 0 或接近
我正在尝试找到用 C 语言计算以下内容的最快方法: p = 2^(ceil(log2(x))); 到目前为止,通过查看 Stack overflow(和其他地方)中的答案,我已经做到了这一点: #de
我试图在 sympy 中求解一个简单的对数方程,但是当我尝试执行代码时,我得到了一个RuntimeError: maximum recursion depth exceeded。这是我正在做的: im
我是一名优秀的程序员,十分优秀!