注册 登录
编程论坛 C语言论坛

编写一个求x的y次方的函数

不啰嗦 发布于 2019-11-18 11:56, 7966 次点击
怎么在不调用软件自带数学函数的情况下,编写程序求x的y次方
在网上看了好多例子都是直接调用软件自带函数解决的
6 回复
#2
rjsp2019-11-18 11:58
你总得说说 x、y 的类型吧,起码 y 的类型得告诉大家吧?foo( 1.23, 3.14 ) 你怎么搞?
#3
不啰嗦2019-11-18 12:12
不好意思,没有给出完整题目,
题目的x为实型,y为整形,要求返回值也是实型
#4
不啰嗦2019-11-18 12:14
回复 2楼 rjsp

不好意思,没有给出完整题目,
题目的x为实型,y为整形,要求返回值也是实型
#5
rjsp2019-11-18 12:45
以下是引用不啰嗦在2019-11-18 12:12:32的发言:

不好意思,没有给出完整题目,
题目的x为实型,y为整形,要求返回值也是实型
y为整形?你确定不是无符号整型?
当然了,y是负数仅仅是增加了一步 取倒数 而已。

以下为伪代码
程序代码:
double your_pow( double x, int y )
{
    if( x==0 && y==0 )
        return 定义域错误;
    if( x==0 && y<0 )
        return 定义域错误 或 极点错误;
    if( x==0 && y>0 )
        return 0;

    unsigned y的绝对值 = (unsigned)(y<0 ? -y : +y); // 必须换成unsigned类型,因为 -INT_MIN 依然是小于0的数

    double result = 1;
    for( unsigned i=0; i!=y的绝对值; ++i ) // 没用“快速幂”,免得还要解释
        result *= x;
    if( y < 0 )
        result = 1.0/result;

    return result;
}



#6
不啰嗦2019-11-18 14:58
回复 5楼 rjsp
谢谢大佬的回答
#7
guan_yizhe2019-11-18 15:19
我怀疑我们是同学哈哈哈【滑稽】
1