1.递归函数:直接或者间接调用自身的函数称为递归函数,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
2.基本思想:把一个不能或不好解决的大问题转化为一个或者几个小问题,再把这些小问题进一步分解成更小的小问题。最小的问题可以直接解决。
3.递归关键:在于找出递归定义和递归终止条件。
递归定义:使问题向边界条件转化的规则。递归定义必须能使问题越来越简单。
递归终止条件:也就是所描述的问题的最简单情况,它本身不再使用递归的定义。
4.解题通常有三个步骤:
(1)分析问题,寻找递归:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小。
(2)设置边界,控制递归:找出停止条件,即算法可解的最小规模问题。
(3)设计函数,确定参数:设计函数体中的操作及相关参数。
相关题型
1.欧几里得算法求两个数的最大公约数
#include<bits/stdc++.h>
using namespace std;
int gcd(int,int);
int main()
{
int m,n;
cin>>m>>n;
cout<<gcd(m,n)<<endl;
return 0;
}
int gcd(int m,int n)//采用递归算法实现辗转相除法
{
if(n==0)return m;//余数为零,中止调用子程序
else return gcd(n,m%n);
}
2.求x^n问题
//分析:把x^n分解为x*x^(n-1),其中x^(n-1)又用x*x^(n-2)求。
//当到达n=0时终止调用