C语言递归实现k的n次方

C语言递归实现k的n次方

递归含义:

程序调用自身的编程技巧称为递归( recursion )。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小

递归的两个必要条件

1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。

2.每次递归调用之后越来越接近这个限制条件。

递归容易出现的问题

Stack overflow(栈溢出),main函数在栈中申请一块空间,调用test函数,也要为其分配空间,test函数又调用自己,又要分配一块空间,所以递归如果没有退出条件或者递归太深,会造成栈溢出现象

在这里插入图片描述
写递归代码的时候需要注意:

1.不能死递归,要有跳出条件,每次递归逼近跳出条件

2.递归层次不能太深

实例:

递归实现k的n次方

如:56 = 55+54+53+52+51+50

double Pow(int k, int n)
{
	if (n > 0)				//次方数为正数
	{
		return Pow(k, n - 1) * k;	//依次求n-1,n-2,n-3...的次方
	}
	else if (n < 0)			//次方数是负数
	{
		return 1.0 / Pow(k, -n) * k;
	}
	else					//1次方
	{
		return 1.0;
	}
}
int main()
{
	int k,n;
    scanf("%d %d\n",&k,&n);		//k是数值,n是次方数
    double ret = Pow(k,n);
    printf("%d\n",ret);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值