problem with return value in C

Greetings all.

I am running into an issue with a program I am working with. In the power function everything seems to be working but it returns some funky value.

Any help would be great.

Code:

#include <stdio.h>

#include <math.h>

void run(void);

int getnumb2(void);

int getnumb1(void);

int power( int semisol, int number, int to );

int main(){

run();

return (0);

}

void run(void){

int x, y, answer;

printf("\nThis program will take a number and an exponent. For example, the program will preform x to the power of y.");

x=getnumb1();//gets the first the number; the base

y=getnumb2();//gets the exponent

answer=power(x, x, y);//a recursive function that solves the equation//

printf("\n%d to the power of %d is %d\n\n\n",x,y,answer);

}

int getnumb1(void){//gets the first the number; the base

int x;

printf("\nPlease enter a value for x: ");

scanf("%d",&x);

return x;

}

int getnumb2(void){//gets the exponent

int y;

printf("\nPlease enter a value for y: ");

scanf("%d",&y);

return y;

}

int power(int semisol, int number, int to){//a recursive function that solves the equation/ x to the power of y or 'number' to the power of 'to'

if (to==0){

semisol=1;

printf("test of zero");//tst lones

return semisol;

}

else if (to==1){

printf("%d %d",to,semisol);//test line only

printf(" test of one ");//test line only

return semisol;

}

else if (to>1){

printf("%d %d",to,semisol);//test line only

printf(" Stop ");//test line only

semisol= semisol * number;

to = to - 1;

power(semisol, number, to);

}

}