重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include
公司主营业务:成都网站制作、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出漳州免费做网站回馈大家。
#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为
无符号整数
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函数求的是x的i次方,分母为
i的
阶乘。本部分可以优化,因为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)
//任何数的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;
}
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;
}
改成这样,虽然你那个写的是递归调用,但是返回的却是1/pow,那么就会是0.5 * 2 * 0.5 * 2 * 0.5这样的形式返回,所以最终无论是多少,结果都是0.5,而且递归时应该用1-q,因为你调用负数求幂,必须使参数为负才会正确