我正在閱讀 Alexander A. Stepanov 和 Daniel E. Rose 寫的名為“從數學到通用編程”的書,第二章包含對埃及乘法演算法的描述。其復雜性描述為# (n) = [log n] (ν(n) - 1)。一般來說,這是完全可以理解的,但“# ”是什么意思?它是數學函式的一種符號形式還是什么?
uj5u.com熱心網友回復:
“#”常表示“數量”,“ ”號用作索引。所以我們有“添加的數量”。
uj5u.com熱心網友回復:
作者說,在給出等式之前的那本書,
乘法 1 要做多少次加法?每次呼叫該函式時,我們都需要執行 a a 中的 指示的加法運算。由于我們在遞回時將值減半,因此我們將呼叫函式 log n 次。有時,我們需要在 result a 中執行另一個由 指示的加法。所以添加的總數將是
# (n) = ?log n? (ν(n) ? 1)
int multiply1(int n, int a) {
if (n == 1) return a;
int result = multiply1(half(n), a a);
if (odd(n)) result = result a;
return result;
}
bool odd(int n) { return n & 0x1; }
int half(int n) { return n >> 1; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337034.html
下一篇:縮放后如何計算網格內給定點的坐標
