递归函数C程序

  • 本文关键字:程序 递归函数 c
  • 更新时间 :
  • 英文 :


xy是整数,需要计算函数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为负数,您需要使用doublefloat。使用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

最新更新