ACM 反覆平方法的兩種寫法

2022-09-02 05:54:08 字數 810 閱讀 3058

一直以來對反覆平方法都是知道個大概意思,但是一直都處於混淆的狀態,今天總結一下。

網上通常看到的**是這個樣子的:

1

int pow(int a, int

b) 8 r *=r;

9 b /= 2;10

}11return

result;

12 }

假設b為1011的話,列出來b運算過的部分 result r的結果是:

b運算過的部分        result                r

0                        1                       a

1                        a                       a^2

11                      a*a^2                a^4

011                    a*a^2                a^8

1011                  (a*a^2)*a^8      a^16

第二種實現是《演算法導論》的實現,**是這個樣子的:

1

int pow(int a, int

b) 8}9

return

result;

10 }

這個就比較好懂了,同樣以b=1011為例,result的值依次是a^1 , a^10 , a^101 , a^1011。可以看出來,這個才是真正「原汁原味的」反覆平方法

flume兩種寫法

1.全寫 bin flume ng agent conf conf name a1 conf file job flume netcat logger.conf dflume.root.logger info,console 2.簡寫 bin flume ng agent n a1 c conf f...

氣泡排序的兩種寫法

public static void main string args function1 a function2 a public static void function1 int a system.out.println system.out.println 第 i 1 次迴圈完成 syste...

全排列的兩種寫法

對於陣列 1,2,3 他們按照從小到大的全排列是 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 現在給你乙個正整數n,n小於8,輸出陣列 1,2,n 的從小到大的全排列。由出口遞迴回溯時,至少返回2層,第一次因為if語句,第二次因為不滿足for迴圈條件 include in...