#includestdio.h
创新互联主营兴宾网站建设的网络公司,主营网站建设方案,app软件定制开发,兴宾h5小程序设计搭建,兴宾网站营销推广欢迎兴宾等地区企业咨询
double power(double x,int n)
{if(n==0)return 1.0;
else if(n0)return x*power(x,n-1);
else return power(x,n+1)/x;
}
int main()
{double x;
int n;
scanf("%lf%d",x,n);
printf("%lf\n",power(x,n));
return 0;
}
/*x^n的值必须小于32767,否则输出的就是负数。因为,int只有这么大,正常的pow函数应该是float型或是double型,参数也应是float或是double型。*/
#include stdio.h
int power(int x,int n)
{
if (n1)
{
return x*power(x,n-1);
}
else
{
if (n0)
return x;
else
return 1;
}
}
void main()
{
int x,n;
printf("input x,n:");
scanf("%d%d",x,n);
printf("%d",power(x,n));
getch();
clrscr();
}
设置四个变量左边界l,右边界r,上边界u,下边界d。每调用一次递归在二维数组中存一层数据,然后把l加1,r减1,u加1,d减1。lr为递归出口。代码如下:
#include stdio.h
int b[100][100];
void fz(int l,int r,int u,int d,int v,int n)
{
int x,y,i,j,k,m;
if(lr)
for (x=0;xn;x++)
{
for (y=0;yn;y++)
printf("%4d",b[x][y]);
printf("\n");
}
while(l=r)
{
for (i=l;i=r;i++) b[u][i]=v++;
for (k=u+1;kd;k++) b[k][r]=v++;
for (j=r;jl;j--) b[d][j]=v++;
for (m=d;mu;m--) b[m][l]=v++;
return fz(l+1,r-1,u+1,d-1,v,n);
}
}
int main()
{
int n;
scanf("%d",n);
fz(0,n-1,0,n-1,1,n);
return 0;
}
int f(int x,int n)
{
if (n==0)
return 1;
else
return x*f(n-1);
}
表示的是求(整数)x的(非负整数)n次幂
大致情况就是这样,我写的这个适用范围比较窄。
#includestdio.h
int
power(int
x,int
n)
{
if(n
==
0)
//任何数的0次方都是1
return
0;
else
if(n
==1)
//如果是1次方
则返回本来的值
return
x;
else
//否则递归循环
return
x*power(x,n-1);
}
main()
{
printf("%d
",power(3,3));
printf("%d
",power(4,2));
getchar();
return
0;
}