递归分别求整数和实数的整数幂

我的代码
问题是oj上显示50%正确率 错误在runtime failure 能帮帮我吗

#include<iostream>
#include<string>
using namespace std;

int getpower(int m,int n){
    if(n<0) return 0;
    if(n==1) return m;
    else {
        return m*getpower(m,n-1);}}

double getpower(int m,double n){
    
    if(m==1)return n;
    else {
        return n*getpower(m-1,n);}}

int main(){
    int a=0,m=0;double b=0;
    cin>>a>>b;
    cin>>m;
    int x=getpower(a,m);
    int y=(int)(getpower(m,b)*10000);
    double y2=y/10000.0;
    printf("%d %.4f",x,y2);
    return 0;}

    

n==0应该return 1呀