Объясните объявление переменной функции в C

Следующий код для расчета (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;
}

-5

Решение

Функция будет выполнена с заданными параметрами, затем return() обработанное значение. Это значение будет затем присвоено var,

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

Эта строка является частью рекурсивной реализации функции.

2

Другие решения

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

Это определяет переменную с именем tmpи инициализирует его значением, возвращаемым вызовом функции mypow( base, pow >> 1, mod ),

1

Это не называется объявлением переменной функции, возможно, аргументы передаются функции.

Поэтому, когда вы пытаетесь вызвать функцию как mypow(25,20,22)эти три фактических аргумента передаются вызываемому в качестве формальных аргументов. В C Вы всегда вызываете ссылочный метод при передаче аргументов.

0