函数 (1/2)^n 属于哪个 Big O 类?
从纯粹的数学角度来看,我们似乎必须将其放入 O(1) 中,因为对于任何足够大的 n,1/2^n 都接近 0。
然而,当涉及到渐近分析和大O时,我们往往会做很多手把手的工作,并且还会回顾公式。1/2 从技术上讲是一个常数,因此看起来会落入 O(c^n) 的范围。
我倾向于 O(c^n) 因为在谈论算法时说“半个操作”是没有意义的。当输入变大时,什么算法需要一半的时间?充其量,我看到数学公式 (1/2)^n 指的是某个时间常数的一半 - 比如说一分钟。所以 (30 秒)^n 变成了一个巨大的数字,并且该函数显然属于 O(c^n) 。
一点帮助?
我正在尝试编写一个 C 函数,该函数从文件中读取第一行文本,然后使用fseek()和ftell()来获取文件其余部分的大小(文件减去第一行)。
我的想法是用一秒钟的时间FILE *fp1来获取原始文件的位置FILE *fp,并用 发送fp1到文件的末尾fseek(),这样我就不必移动原始文件fp并失去其位置。
这是我的代码。编译器告诉我不能分配fp1给fp,因为fp1is aFILE*和fpis a struct FILE*。
我可以通过这种方式实现我想要做的事情吗?
FILE *fp, fp1;
fp = fopen(filename, "r");
if (!fp)
return 0;
fscanf(fp, "%1d", m); //Lines 15-18 read the first line of the file
fscanf(fp, "%*1c");
fscanf(fp, "%1d", n);
fscanf(fp, "%*1c");
fp1 = fp; //<---------- This is my problem.
//how do I set …Run Code Online (Sandbox Code Playgroud) 免责声明:我对 Haskell 很陌生
我正在尝试基于此设计在 haskell 中构建一个不透明的多态队列 ADT :
module Queue (Queue, empty, isEmpty, frontOf, enqueue, dequeue) where
data Queue a = Queue [a] [a] deriving Show
enqueue :: Queue a -> a -> Queue a
enqueue (Queue xs ys) y = Queue xs (y:ys)
dequeue :: Queue a -> Maybe (Queue a)
dequeue (Queue [] []) = Nothing
dequeue (Queue [] ys) = dequeue (Queue (reverse ys) [])
dequeue (Queue (x:xs) ys) = Just (Queue xs ys)
Run Code Online (Sandbox Code Playgroud)
但我正在尝试使用 …