#includestdio.h
創(chuàng)新互聯(lián)主營(yíng)興賓網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開(kāi)發(fā),興賓h5小程序設(shè)計(jì)搭建,興賓網(wǎng)站營(yíng)銷推廣歡迎興賓等地區(qū)企業(yè)咨詢
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,否則輸出的就是負(fù)數(shù)。因?yàn)?,int只有這么大,正常的pow函數(shù)應(yīng)該是float型或是double型,參數(shù)也應(yīng)是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();
}
設(shè)置四個(gè)變量左邊界l,右邊界r,上邊界u,下邊界d。每調(diào)用一次遞歸在二維數(shù)組中存一層數(shù)據(jù),然后把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);
}
表示的是求(整數(shù))x的(非負(fù)整數(shù))n次冪
大致情況就是這樣,我寫(xiě)的這個(gè)適用范圍比較窄。
#includestdio.h
int
power(int
x,int
n)
{
if(n
==
0)
//任何數(shù)的0次方都是1
return
0;
else
if(n
==1)
//如果是1次方
則返回本來(lái)的值
return
x;
else
//否則遞歸循環(huán)
return
x*power(x,n-1);
}
main()
{
printf("%d
",power(3,3));
printf("%d
",power(4,2));
getchar();
return
0;
}