递归运算
递归运算是运用有限的语句描述一个无穷的集合,并且递归的调用可以自身直接调用(直接递归调用),也可以其他函数进行调用(间接递归调用)
递归的运算的要领:
1. 找到终止条件!!!!(通常应该是第一个或者前几个做为)
2. 然后就根据题目缩小规模进行运算!!!
-
最简单例子—阶乘
n!=1 * 2 * 3…*n -
找到终止条件,当0!时等于1是最特别的,所以当n==1时为终止条件
-
然后注意观察此方程,是由每n和n-1项的乘机构成,所以其条件应该就是
n *face(n-1)
由图片可以明确的看出其调用方法以及返回。
所以我们就可以写出代码,这是一个简单的递归调用。
#include <iostream>
using namespace std;
long fact(int n)
{
if(n==0) return 1;
else return n * fact(n-1)
}
int main()
{
int n;
cin>>n;
cout<<fact(n)<<endl;
}
***全排列
如何将1234全排列呢?
也就是1可以在前面,然后234在后面进行排列。然后依次是2,3,4在第一位时后位进行排列的方法。
与之前一样,首先我们要找到终止条件
//产生从元素k-m的全排列,作为前k-1个元素的后缀
void perm(char list[],int k,int m)
{
//构成一次全排列
if