oj显示输出超限怎么解决
#include <stdio.h>#include <math.h>
double getpower(int x,int y);
int main() {
signed int x,y;//符号参量
while(scanf("%d %d",&x,&y)!=EOF) {
double result;
result=x*getpower(x,y-1);//递归
if(x==0)
break;//x=0跳出循环
printf("%f\n",result);
}
return 0;
}
double getpower(int x,int y) {
double a;
a=pow(x,y);
return a;
}
你这个代码是计算什么的? printf("%lf\n",result);//double 用%lf格式输出 jackz007 发表于 2021-11-4 17:10
你这个代码是计算什么的?
x的y次方的递归函数 jhq999 发表于 2021-11-4 17:11
不行啊 牵风 发表于 2021-11-4 17:12
x的y次方的递归函数
不会是用递归函数计算 x ^ y 吧? jackz007 发表于 2021-11-4 17:25
不会是用递归函数计算 x ^ y 吧?
就是用递归函数计算x的y次方 本帖最后由 jackz007 于 2021-11-4 17:39 编辑
牵风 发表于 2021-11-4 17:31
就是用递归函数计算x的y次方
#include <stdio.h>
int powerx(int x , int y)
{
return (! y) ? 1 : x * powerx(x , y - 1) ;
}
int main()
{
int x , y ;
while(scanf("%d%d" , & x , & y) != EOF) {
if(! x) break ;
else printf("%d\n" , powerx(x , y)) ;
}
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
5 2
25
5 3
125
3 3
27
0 0
D:\0002.Exercise\C> jackz007 发表于 2021-11-4 17:36
编译、运行实况:
能解释下return(! y)和if(! x)是什么意思吗 牵风 发表于 2021-11-4 17:46
能解释下return(! y)和if(! x)是什么意思吗
! 是逻辑反运算符,当 x 的值为 0 的时候,对应的逻辑值为 false,不为零的时候逻辑值为 true,而如果在前面加上 ! 运算符,逻辑值正好相反。所以,if(x) 等价于 if(x != 0),if(! x) 等价于 if(x == 0)
! x 和 ! y 就是 x == 0 和 y == 0 的意思,至于 return 那一句,你应该知道 C 语言的三目运算符吧? 没毛病 jackz007 发表于 2021-11-4 17:57
! 是逻辑反运算符,当 x 的值为 0 的时候,对应的逻辑值为 false,不为零的时候逻辑值为 true, ...
哦哦懂了 牵风 发表于 2021-11-4 17:58
哦哦懂了
如果问题已经解决,不要忘记设置 "最佳答案" 哦。 jhq999 发表于 2021-11-4 17:58
没毛病
我的也能运行但在oj上就显示输出超限
牵风 发表于 2021-11-4 17:31
就是用递归函数计算x的y次方
这也不是递归 jhq999 发表于 2021-11-4 18:00
这也不是递归
那能不能告诉我一下递归的话咋改{:5_92:} 本帖最后由 jhq999 于 2021-11-4 18:12 编辑
牵风 发表于 2021-11-4 18:02
那能不能告诉我一下递归的话咋改
double getpower(int x,int y) {
double a=1;
if (y>1) a=getpower(x,y-1);
return a*x;
} jhq999 发表于 2021-11-4 18:11
谢谢 本帖最后由 jhq999 于 2021-11-4 18:31 编辑
#include <stdio.h>
double getpower(double x,int y);
int main() {
signed int x,y;//符号参量
while(scanf("%d %d",&x,&y)!=EOF) {
double result;
result=getpower(x,y);//递归
if(x==0)
break;//x=0跳出循环
printf("%lf\n",result);
}
return 0;
}
double getpower(double x,int y)
{
if (y>1) x=getpower(x,y-1)*x;
return x;
}
double getpower(double x,int y)
{
double a=1;
while(y--)a*=x;
return a;
}
页:
[1]