编写一个power函数,计算xy,在main函数中,输入数据,并输出程序运行结果?

如题所述

#include<iostream>
using namespace std;
//递归实现,效率不高,注意绝对值的取法。算法复杂度log(n),空间复杂度O(logn)
double GetPower(int x, int y)
{
double ret = 0;
bool small = y < 0;
y = (y^(y>>31)) - (y>>31);
if (y == 0) return 1;
if (y == 1) return x;
ret = GetPower(x, y >> 1);
ret *= ret;
if (y&1) ret *= x;
return small ? 1.0/ret : ret;
}
//非递归实现,高效率的方式。算法复杂度log(n),空间复杂度O(1)
double power(int x, int y)
{
double ret = 1;
int sign = y < 0;
y = (y^(y>>31)) - (y>>31);
while (y){
if (y&1) ret *= x;
x *=x;
y >>=1;
}
return sign ? 1.0/ret : ret;
}
int main(void)
{
int x, y;
while (cin >> x >> y){
cout << GetPower(x, y) << endl;
cout << power(x, y) << endl;
}
return 0;
}
扩展资料:
常见递归函数
1、复合算子,设f是n元函数,g1…gn是m元函数,复合算子将f,g1…gn变换成为如下的m元函数h:
h(x1…xm)=f1g1(x1,…xm),…gn(x1,…xm))
2、递归算子,设f是n元函数 (≥0),g是n+2元函数,递归算子将f,g变换成满足下列条件的h+1元函数h:
h(x1,…,xn,0)=f(x1,…xn)
h(x1,…xn,y+1)=g(x1,…xn,y,h(x1,…xn))
3、μ一算子,设f是n+1元函数,如果存在y,使f(x1,…xn,y)=0,我们以μyf(x1…xny)表示这样的y中的最小者,如果使f(x1…xny)=0的y不存在,我们说μyf(x1,…xny)无定义。μ-算子将n+1元函数f变换成下面的几元函数h
h(x1,…xn)=μyf(x1…xny)
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-23
编写一个power函数,计算xy,在main函数中,输入数据,并输出程序运行结果可以通过编程来解决。

...根据用户输入的x和y值来计算xy的值。要求编写power(x,y)函数...
include <stdio.h> power(float a,float b){ float sum1=a*b;return sum1;} void main(){ float x,y;float sum;printf("input the first number:\\n");scanf("%f",&x);printf("input the second number:\\n");scanf("%f",&y);sum=power(x,y);printf("xy is %f\\n",sum);} ...

3.编程题(20分)'题目:编写程序,在+100999=+位整数范围内找出水仙花数...
sum += power(digit, 3);temp \/= 10;}if (sum == i) {printf("%d\\n", i);}}return 0;}在上述代码中,我们定义了一个power函数,用于计算一个数字的n次方,其中n和m分别表示数字和次方数。在main函数中,我们使用一个循环遍历所有+100999=+位整数,并计算各位数字的3次方之和。如果该数...

C++编程 编写递归函数power(a,n)求出a的n次方
return a*power(a,n-1);}void main(){ float a; int n; cout<<"请输入实数a:"<<endl; cin>>a; cout<<"请输入正整数n:"<<endl; cin>>n; cout<<“运算结果是:"<<power(a,n)<<endl;} pengyihan456 | 发布于2011-03-06 举报| 评论 1 0 float power(float a,int n){ if (n==...

用C语言编写一个学生管理系统。
\/\/main主函数 int main(void) { int choice,n; while (1) { printf("***\\n"); printf("欢迎使用学生成绩管理系统\\n"); printf("[1] 输入所有学生信息\\n"); printf("[2] 输出所有学生成绩\\n"); printf("[3] 按学号查找某个学生信息\\n"); printf("[4] 按姓名查找某个学生信息\\n"); print...

...函数计算并输出10~100的偶数之和并用在main函数中调用fun函数C语言编...
even numbers between 10 and 100 is: %d\\n", result);return 0;} 在这段代码中,我们首先声明了一个函数 fun,在该函数中使用了一个循环来计算 10~100 之间的偶数之和。在 main 函数中,我们调用了 fun 函数,并将其结果赋值给变量 result。最后,我们使用 printf 函数将结果输出到屏幕上。

关于C语言中n次幂函数的用法
int pow=1;int i;for(i=0;i<=p;i++)pow*=n;return pow;} 在调用:S[i]=power(n,i); 之前,i未初始化,可以手动输出来看一下,值结果是随机的,并不一定是0。编译会提示:Warning: Possible use of 'i' before definition in function main在do{}while;中,开关i值并未改变,若i<...

...程序:输入2个非零整数求它们和、差、积、商并输出
编写一个C语言程序,输入两个非零整数,求它们的和、差、积、商,并输出结果。程序如下:在程序开头,我们需要包含头文件stdio.h,因为它提供输入输出函数。接下来,定义主函数main(),这是程序的入口点。在main()函数中,我们首先定义两个整型变量a和b,用于存储输入的两个操作数。使用printf()函数...

C语言中怎么算x的n次方呢?
在C语言中,你可以使用pow()函数来计算x的n次方。这个函数在math.h库中,因此你需要在程序开头包含这个库。以下是一个简单的示例:在这个示例中,我们计算了2的3次方,并将结果打印出来。%.2f是用来限制打印结果的小数点后的位数为2位。如果你希望结果更加准确,你可以使用long double或者double类型来...

编写一个求最大公约数的函数,并编写调用这个求最大公约数函数的程序...
如果两个自然数是互质数,那么它们的最大公约数是1,最小公倍数是这两个数的乘积。例如8和9,它们是互质数,所以(8,9)=1,[8,9]=72。如图所示:如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数。例如18与3,18÷3=...

C语言代码问题?
在C语言中,我们可以编写一个程序来找出并输出10000以内的所有亲密数对。首先,我们需要编写一个函数来计算一个整数的所有真因子之和。然后,我们可以遍历1到10000之间的所有整数,对于每个整数,检查其真因子之和是否也在1到10000的范围内,并且它们的真因子之和是否互为对方。以下是C语言代码的一个示例...

相似回答