【C语言】循环+递归--计算double型数的正整数次幂--推广到负整数次幂

//正整数幂

#include<stdio.h>
#include<ctype.h>
double power(double a,int n);
int main()
{
	double x;
	int exp;
	printf("Enter x and exp\n");
	while(scanf("%lf%d",&x,&exp)==2)
	{
		printf("%.3f to the power %d is \n%",x,exp);
		printf("%.5f\n",power(x,exp));
		printf("again");
	}
	printf("Enter q to exit\n");
	printf("Bye!");
	return 0;  
 } 
 double power(double a,int n)
 {
 	int i;
 	double c=1;
	for(i=0;i<n;i++)
		c*=a;
	return c; 
 }	

//推广到幂为任意整数

#include<stdio.h>
#include<ctype.h>
double power(double a,int n);
int main()
{
	double x;
	int exp;
	printf("Enter x and exp\n");
	while(scanf("%lf%d",&x,&exp)==2)
	{
		printf("%.3f to the power %d is \n%",x,exp);
		printf("%.5f\n",power(x,exp));
		printf("again");
	}
	printf("Enter q to exit\n");
	printf("Bye!");
	return 0;  
 } 
 double power(double a,int n)
 {
 	int i;
 	double c=1;
 	if(!n)//任意数的零次幂 
 	{
 		if(!a)
			printf("illegal.\n");
		c=1.0;
	}
	else if(!a)//零的任意次幂 
		c=0.0; 
	else if(n>0)//正整数幂 
		for(i=0;i<n;i++)
			c*=a;
	else//负整数幂 
		for(i=0;i<-n;i++)
			c*=1/a;
	return c; 
	}	

//下面截取循环法段落

lse if(n>0)//正整数幂 
		for(i=0;i<n;i++)
			c*=a;
	else//负整数幂 
		for(i=0;i<-n;i++)
			c*=1/a;

和另外给出的递归法

else if(n>0)//正整数幂 
		c=a*power(a,n-1);
	else//负整数幂 
		c=1/power(a,-n);

经过本人推导和验证,两者等价。用递归程序更为简洁。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值