蓝桥杯

前言

递归算法是一种从自顶向下的算法,实际上是通过不停的直接调用或者间接的调用自身的函数,通过每次改变变量完成多个过程的重复计算,直到到达边界之后,结束调用。

一、递归算法

一个函数调用其自身就是递归。

二、实例

可以得到递归关系与递归出口

int fact(int n)
{
	if(n==1)
	return 1;
	else
	return n*fact(n-1);
	
 } 
int main()
{
	int a;
	cin>>a;
	cout<<fact(a)<<endl;
	return 0; 
}

void convert(int x)
{
	if((x/2)!=0)
	{
		convert(x/2);
		cout<<x%2;
	}
	else
	cout<<x;
}
int main()
{
	int n;
	cin>>n;
	convert(n);
	return 0;
}

总结

递归算法的思想:

1、将复杂计算过程转换为简单重复子过程;
2、找到递归公式,即能够将大问题转化为小问题的公式;
3、自上而下计算,在返回完成递归过程。

递归算法设计的一般步骤:

根据题目设计递归函数中的运算部分;
1、根据题目找到递归公式,题目可能会隐含给出,也可能需要自己进行推导;
2、找到递归出口,即递归的终止条件。