c++程序问题 求m的n次幂
发布网友
发布时间:2024-09-08 17:03
我来回答
共3个回答
热心网友
时间:2024-10-15 09:23
(n&0x01UL==0)
n就是你上面传来的n的参数
& 是位运算的“与”
以"0x"开头的数表示这是一个16进制数
0x01就表示这是个16进制数,值为1
UL是"unsigned long",表示0x01是个"unsigned long"型的数
temp=re(m,n>>1);/* >>表示右移1位
如是n<<1就是左移1位
这也是位运算
n<<1相当于n*2;
n>>1相当于n/2;
同理:
n<<2 相当于n*4
左移一位,数值翻倍。
右移相反咯。。
热心网友
时间:2024-10-15 09:24
。。。。。
热心网友
时间:2024-10-15 09:23
unsigned long re(unsigned long m,unsigned long n)
{
unsigned long temp;
if (n==0)
return 1;
else if (n&0x01UL==0)/*这里表示如果n是偶数,则采用下面方式计算*/
{
temp=re(m,n>>1);/* >>表示左移1位,n>>1等价于n/2*/
return temp*temp;
}
else
return m*re(m,n-1);
}