函數(shù)具備遞歸性質(zhì),才能寫出遞歸程序,很明顯f(x)=x不成,比如階乘就可以
創(chuàng)新互聯(lián)建站專注于滄州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都做商城網(wǎng)站。滄州網(wǎng)站建設(shè)公司,為滄州等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
f(x)=1*2*3*...*x
可以具備遞歸定義:
/
1(x=0,1)
f(x)=|
x
*
f(x-1)
(x1)
x為正整數(shù)
則程序如下:
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
結(jié)果是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("結(jié)果為%d",c);
return?0;
}
擴(kuò)展資料
#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;
}
參考資料:百度百科 - 遞歸調(diào)用