下面的代码是计算(base^pow)%mod
任何人都可以向我解释以下代码,该代码涉及向函数声明变量,我想知道函数分配给变量的值以及它是如何做到的。
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("nn%dnn",tmp);
return tmp * tmp % mod;
}
else{
return base * mypow( base, pow - 1, mod ) % mod;
}
}
int main(){
printf("nn%dnn", mypow(25,20,22));
return 0;
}
该函数将使用给定的参数执行,然后它将return()
处理后的值。然后将此值分配给var
。
int tmp = mypow( base, pow >> 1, mod );
此行是函数递归实现的一部分。
int tmp = mypow( base, pow >> 1, mod );
这定义了一个名为tmp
的变量,并将其初始化为函数调用返回的值mypow( base, pow >> 1, mod )
。
它不称为函数的变量声明,也许是传递给函数的参数。
因此,当您尝试调用函数时mypow(25,20,22)
,这三个实际的参数作为形式参数传递给被调用方。C
在传递参数时,您始终通过引用方法进行调用。