运用递归解决问题的要点:
(1)缩小问题规模(将问题分为若干步,注意构造问题间的相似性)
(2)分析递归出口
下面从一些经典的实例来分析递归问题的特征
1.从n个小球中取m个,问有多少种取法?
1 #include2 using namespace std; 3 4 int f(int n,int m){ 5 if(n >n>>m;12 cout<
2.打印字符串的全排列
1 #include2 #include 3 #include 4 using namespace std; 5 6 void f(string str,int k) 7 { 8 if(str.length()-1==k){ 9 cout< <
3.最长公共子序列的长度
1 #include2 #include 3 #include 4 using namespace std; 5 6 string a,b; 7 int lcs(int m,int n) 8 { 9 if(m==-1||n==-1) return 0;10 if(a[m]==b[n]) return lcs(m-1,n-1)+1;11 else return max(lcs(m-1,n),lcs(m,n-1));12 }13 int main(){14 cin>>a>>b;15 cout< <