编程论坛
注册
登录
编程论坛
→
C语言论坛
编写一个求x的y次方的函数
不啰嗦
发布于 2019-11-18 11:56, 7966 次点击
怎么在不调用软件自带数学函数的情况下,编写程序求x的y次方
在网上看了好多例子都是直接调用软件自带函数解决的
6 回复
#2
rjsp
2019-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
rjsp
2019-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_yizhe
2019-11-18 15:19
我怀疑我们是同学哈哈哈【滑稽】
1