#include<iostream>
#include<cstdio>
#define M 1000000007
using namespace std;
long long int power(int a,int b)
{
if(b==0)
return 1;
else if(b==1)
return a;
else if(b%2==0)
return power((a*a)%M,b/2);
else
return (power((a*a)%M,b/2)*a)%M;
}
在这个函数中,当我通过 a=2,b>31 时,它总是返回 0。对于 b=31,我得到 147483634。你能说出问题出在哪里吗?
或者你能告诉另一种计算数字大幂的方法吗?