下面的代碼是計算(基礎^ POW)%MOD解釋變量聲明爲函數用C
任何一個可以給我解釋一下下面的代碼,是指在聲明一個變量的函數,我想知道函數賦給變量的值以及它如何執行。
int tmp = mypow(base, pow >> 1, mod);
整個代碼:
#include<stdio.h>
int mypow(int base, int pow, int mod)
{
if(pow == 0) return 1;
if(pow % 2 == 0){
int tmp = mypow(base, pow >> 1, mod);
printf("\n\n%d\n\n",tmp);
return tmp * tmp % mod;
}
else{
return base * mypow(base, pow - 1, mod) % mod;
}
}
int main(){
printf("\n\n%d\n\n", mypow(25,20,22));
return 0;
}
這與初始化一個正常的變量聲明。它與例如'int tmp = 5;',除了初始化表達式是一個函數調用。 –
這是[這裏]描述的遞歸算法的實現(http://en.wikipedia.org/wiki/Exponentiation_by_squaring#Basic_method)。 –