以下代码用于计算(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("\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;
}
答案 0 :(得分:2)
该函数将使用给定的参数执行,然后它将return()
处理后的值。然后,此值将分配给var
。
int tmp = mypow( base, pow >> 1, mod );
这一行是函数递归实现的一部分。
答案 1 :(得分:1)
int tmp = mypow( base, pow >> 1, mod );
这定义了一个名为tmp
的变量,并将其初始化为函数调用mypow( base, pow >> 1, mod )
返回的值。
答案 2 :(得分:0)
它不被称为函数的变量声明,也许是传递给函数的参数。
因此,当您尝试将函数调用为mypow(25,20,22)
时,这三个实际的args将作为正式参数传递给callee。在C
中,您总是通过引用方法调用args。