close

本題使用遞迴求解可以很快這樣~

先備知識
    (a * b) mod c = ((a mod c) * (b mod c)) mod c
然後

B^P = B^(P/2) * B^(P/2)
B^P = B^(P-1) * B

例外判斷就是當底數、指數為零的時候
皆為1的時候可以不用呼叫函數XD

處理的時候要分為奇數次和偶數次
只有偶數次才可以直接除二
然後要記得另外開數來存,寫成函數乘函數會變成費柏納基小朋友XD
/*為什麼不能寫成函數乘函數
當你把函數寫了出來,你就等於是在呼叫她
同樣的東西 你卻分成兩邊去呼叫
這樣 就會開始以2^n成長
一個呼叫兩個 兩個就變成四個 四個就變成八個....第十一次就變成2048了Orz
所以要把它呼叫完的結果放在變數裡
這樣~就不會一直重複呼叫 以2^n成長了XD*/

arrow
arrow
    全站熱搜

    aikosenoo 發表在 痞客邦 留言(1) 人氣()