递归
一、递归的算法思想
- 递归:计算机、数学、运筹等领域经常使用的最强大的解决问题的方法之一,它用一种简单的方式解决那些用其他方法解起来很复杂的问题。
- 递归的基本思想:把一个问题划分成一个或多个规模更小的子问题,然后用同样的方法解决。
二、递归算法的基本设计步骤:
- 找到问题的初始条件(递归出口),即当问题规模小到某个程度时,该问题就变得简单,能够直接求解。
- 设计一个策略,用于将一个问题划分成一个或者多个一步步接近递归出口的相似的规模更小的子问题。
- 将所解决的各个问题的解组合起来,即可得到问题答案。
三、设计递归算法时需要注意的几个问题:
- 如何缩小原来的问题,并且保持是同一个类型的问题?
- 每个递归求解的问题其规模如何缩小?
- 多大规模的问题可以作为递归出口?
- 随着问题规模缩小,可以达到递归出口吗?
简单理解例题:
输入n,计算下面的数学公式:f(n)=2ⁿ
因为
所以递归可以写成:
#include <cstdio>
int F(int n)
{
if(n==1)return 2;
else return 2*F(n-1);
}
int main(){
int n;
scanf("%d",&n);
printf("%d",F(n));
return 0;
}