问题
- 求的值(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;
}