我們想要處理乙個整數的冪
long
intpow
(long
int x,
unsigned
int n)
計算x^n,可以使用n - 1次乘法自乘,用遞迴演算法最好。
如果n是偶數則x^n = x ^n/2 * x^n/2;
如果n是奇數,則x的n次冪 = x^(n - 1)/ 2 * x^(n - 1)/ 2 * x;
例如,為了計算x^62,演算法將如下進行,它只用到9次乘法:
x^3 = (x^2)*x , x^7 = (x^3) ^ 2 *x
x^15 = (x^7) ^2 x , x^31 = (x^15) ^ 2x
x^62 = (x^15) ^ 2 *x
顯然,所需要的乘法次數最多是2logn,因為把問題對分最多需要兩次乘法(如果n是奇數)。
(注: 因為由取冪運算得到的數一般都是相當大的,因此,我們只能在假設一台機器能夠儲存這樣一些大整數(或有乙個編譯程式能夠模擬它)的情況下進行分析。)
完整**:
#include
long
intpow
(long
int x,
unsigned
int n)
intmain()
高效率秘籍
高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...
高效率生活
如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...
遞迴 高效率求2的n次冪
思路 使用翻一番的技巧。比如,2的9次 則 1 2 2 2 2 4 4 4 16 16 16 指數 1 2 4 8 能翻倍的情況下 能翻 while ex 1 不能翻倍的情況下 不能翻 則把差值作為指數遞迴計算。當差值為0時,就說明到頭了,只剩最後乙個數字。return 1 乘數字本身即可。retu...