158-实现x的n次幂函数

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:
输入: 2.00000, 10
输出: 1024.00000

示例 2:
输入: 2.10000, 3
输出: 9.26100

方法1(递归方法)

#include<stdio.h>
double func(double x, int n)
{
    
    
    if (n == 0)
        return 1;
    if (n == 1)
        return x;

    double y = func(x, n / 2);//递归方法
    return n % 2 == 0 ? y * y : y * y * x;
}
double myPow(double x, int n)
{
    
    
    if (n == 0)
    {
    
    
        return 1;
    }
    return n > 0 ? func(x, n) : 1.0 / func(x, n);//考虑到n的正负值
}
int main()
{
    
    
	printf("%f\n",myPow(2.00000,10));
	printf("%f\n",myPow(2.10000,3));
	printf("%f\n",myPow(0.50000,-3));
	return 0;
}

运行截图如下:
在这里插入图片描述
对于此程序用到的递归方法图解如下:
假设x=2.00000,n=5
在这里插入图片描述

方法2(常规方法)

#include<stdio.h>
double myPow(double x, int n)
{
    
    
    if (n == 0)
        return 1;

    double res = 1;
    if(n < 0)
    {
    
    
        x = 1 / x;
		n=-n;
    }
    while(n!=0)
    {
    
    
        res *= x;
		n--;
    }
    return res;
}
int main()
{
    
    
	printf("%f\n",myPow(2.00000,10));
	printf("%f\n",myPow(-2.10000,3));
	printf("%f\n",myPow(0.50000,-3));
	return 0;
}

运行结果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LINZEYU666/article/details/113357205