函数具备递归性质,才能写出递归程序,很明显f(x)=x不成,比如阶乘就可以
创新互联建站专注于沧州企业网站建设,成都响应式网站建设公司,成都做商城网站。沧州网站建设公司,为沧州等地区提供建站服务。全流程按需开发,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
f(x)=1*2*3*...*x
可以具备递归定义:
/
1(x=0,1)
f(x)=|
x
*
f(x-1)
(x1)
x为正整数
则程序如下:
int
fact(int
x){
if(x==0||x==1)return
1;
else
return
x*fact(x-1);
}
#include stdio.h
int power(int x, int p)
{
if (p == 0)
return 1;
else
return (x * power(x, p-1);
}
int main(void)
{
int x, p;
scanf("%d%d", x, p);
printf("%d\n", power(x, p));
}
if(a==1)a=1;
这句改成
if(a==1) return 1;
就OK了哦。。。你试试吧。。。
比如输入4
结果是24
希望能帮到你。。。
#includestdio.h
int power(int x,int n)
{
if(n==0)
return 1;
elseif(n%2==1)
return x*power(x,n-1);
else{
int y=power(x,n/2);
return y*y;
}
}
int main()
{
int a,b,c;
printf("enter x and n:");
setvbuf(stdout,NULL,_IONBF,0);
scanf("%d%d",a,b);
c=power(a,b);
printf("结果为%d",c);
return 0;
}
扩展资料
#includestdio.h
double power(double x,int n);
main()
{
double x;
int n;
printf("Input x,n:");
scanf("%lf,%d",x,n);
printf("%.2lf",power(x,n));
}
double power(double x,int n)
{
double a=1.0;
int i;
for(i=1;i=n;i++)
a*=x;
return a;
}
参考资料:百度百科 - 递归调用