問題
- 求的值(n足夠大)
解法:快速冪
- 當n爲偶數時,
- 當n爲奇數時,
Q:爲什麼選,而不是其他組合
A:當希望是二元組合時,最好,因爲兩個值相同,算一個即可;當希望是m元組合時,可以選n/m。
因此可以用遞歸解決該問題
- 若題目要求對大素數求餘,可以在算出和
return
時求餘
int func(int x) // 2^n
{
if (x==0) return 1;
int a = func(x/2);
if (x % 2 == 0) return a * a;
return a * a * 2;
}