#include
公司主營業(yè)務:成都網(wǎng)站制作、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出漳州免費做網(wǎng)站回饋大家。
#include
/*求n的
階乘
,遞歸,
分母
部分
*
結束條件為:1的階乘=1
*
遞歸時,一定要有結束條件
*/
int
factorial
(n)
{
if(n==1)
//遞歸結束條件,1的階乘為1
return
1;
else
return
n*factorial(n-1);
//n的階乘為n乘以(n-1)!
}
int
main()
{
int
n,x;
size_t
i;
//i為
無符號整數(shù)
double
re=0;
printf("input
n
and
x:");
scanf("%d%d",n,x);
//輸入n和x的值
for(i=1;i=2*n-1;i+=2)
{
/*pow函數(shù)求的是x的i次方,分母為
i的
階乘。本部分可以優(yōu)化,因為i的階乘算出來了,所以i+2的階乘就是i的階乘*(i+1)*(i+2),不用重復來計算階乘。自己可以試試*/
re
+=
pow(x,i)/factorial(i);
}
printf("\nn=%d\tx=%d\tresult=%f\n",n,x,re);//打印出
最后的結果
return
0;
}
#includestdio.h
int
power(int
x,int
n)
{
if(n
==
0)
//任何數(shù)的0次方都是1
return
0;
else
if(n
==1)
//如果是1次方
則返回本來的值
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;
}
double power_negative(double n,int p)
{
double pow = 1;
int q;
q=-p;
if(q0)
pow = power_negative(n,1-q) / n;
return pow;
}
改成這樣,雖然你那個寫的是遞歸調(diào)用,但是返回的卻是1/pow,那么就會是0.5 * 2 * 0.5 * 2 * 0.5這樣的形式返回,所以最終無論是多少,結果都是0.5,而且遞歸時應該用1-q,因為你調(diào)用負數(shù)求冪,必須使參數(shù)為負才會正確