x
和y
是整数,需要计算函数f(x,y(=xy。递归计算函数f(x, y)
。
#include <stdio.h>
#include <stdlib.h>
int f(int x, int y) {
if (x == 0 && y != 0) {
printf("answer: 0n");
return 0;
} else if (x != 0 && y == 0) {
printf("result: 1n");
return 1;
} else if (x > 0 && y == 1) {
f(x, 1) == x;
return x;
} else if (x > 0 && y > 0) {
printf("result: %dn", x * f(x, y - 1));
return x * f(x, y - 1);
} else {
y = -y;
printf("result: %dn", 1 / f(x, y));
return 1 / f(x, y);
}
}
int main() {
int k, l;
float result;
printf("*****************ust alma*********************nn");
printf("enter two number: ");
scanf("%dn%d", &k, &l);
result = f(k, l);
printf("girilen result: %d", result);
return 0;
}
我在等你的帮助我不能上这一课。对我来说真的很难。
您的类型有一些问题,y为负数,您需要使用double
或float
。使用int
将获得0我简化了你的功能,你关闭了
不是1的.
使用替身,也不是int
#include <stdio.h>
#include <stdlib.h>
double f(int x, int y){
if(y == 0) {
return 1;
} else if(y > 0) {
return x * f(x, y - 1);
} else {
y = -y;
return 1. / f(x, y);
}
}
int main() {
int k,l;
float result;
printf("*****************ust alma*********************nn");
printf("enter two number: ");
scanf("%dn%d", &k, &l);
result = f(k,l);
printf("girilen result: %fn", result);
return 0;
}
#include <stdio.h>
#include<stdint.h>
double my_pow(ssize_t x,ssize_t y)
{
if (y==0)return 1.0;
else if (y==1)return x;
else if (y<0) return 1.0/my_pow(x,-y);
else return x*my_pow(x,--y);
}
int main(void) {
printf("%.2lfn",my_pow(2,-1));
}
这里有一个紧凑的解决方案:
#include <stdio.h>
double f(int x, int y) {
return y ? y < 0 ? f(x, y + 1) / x : f(x, y - 1) * x : 1;
}
int main() {
int x, y;
printf("*****************ust alma*********************nn"
"enter two numbers: ");
if (scanf("%d%d", &x, &y) == 2)
printf("girilen result: %fn", f(x, y));
return 0;
}
#include <stdio.h>
double f(int x, int y)
{
return y<0 ? 1 / f(x, -y) :
y ? x * f(x, y-1) : 1;
}
int main(void)
{
printf("%.3fn", f(4,0)); // To the 0-power: 1
printf("%.3fn", f(4,1)); // To the 1-power: X
printf("%.3fn", f(4,-2)); // To the negative power: 1/(X^Y)
return 0;
}
输出
Success #stdin #stdout 0s 4472KB
1.0000
4.0000
0.0625