-5

以下代码是计算 (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;
}
4

3 回答 3

2

该函数将使用给定的参数执行,然后将return()其处理后的值。然后这个值将被分配给var.

int tmp = mypow( base, pow >> 1, mod );

这一行是函数递归实现的一部分。

于 2014-03-07T06:30:17.193 回答
1
int tmp = mypow( base, pow >> 1, mod );

这定义了一个名为 的变量tmp,并将其初始化为函数调用返回的值mypow( base, pow >> 1, mod )

于 2014-03-07T06:30:06.100 回答
0

它不被称为函数的变量声明,也许是传递给函数的参数。

因此,当您尝试调用函数 asmypow(25,20,22)时,这三个实际参数将作为形式参数传递给被调用者。在C您传递参数时总是通过引用方法调用。

于 2014-03-07T06:32:28.590 回答