计算功率提升到一个数字

时间:2016-01-24 05:15:15

标签: c

我正计算x加注到n的力量。我无法理解一件事:当我在开始时声明并初始化临时变量时,为什么它会显示分段错误?我知道什么是分段错误,但为什么会显示。

#include<stdio.h>

int power(int x,unsigned int y)
{
int temp=power(x,y/2);
if(y==0)
    return 1;
if(y%2==0)
    return temp*temp;
else 
    return x*temp*temp;
}

//Driver function
int main(int u, int v)
{
printf("Enter the value of u and v");
scanf("%d %u",&u,&v);
printf("%d",power(u,v));

return 0;
}

1 个答案:

答案 0 :(得分:8)

你将无限地递归。你需要一个小的调整[请原谅无偿的风格清理]:

#include <stdio.h>

int
power(int x, unsigned int y)
{
    //int temp = power(x, y / 2);

    if (y == 0)
        return 1;

    int temp = power(x, y / 2);

    if (y % 2 == 0)
        return temp * temp;
    else
        return x * temp * temp;
}

// Driver function
int
main(int argc,char **argv)
{
    int u;
    unsigned int v;

    printf("Enter the value of u and v");
    scanf("%d %u", &u, &v);

    printf("%d\n", power(u, v));

    return 0;
}