一、递归
1、递归的概念
直接或间接的调用自身的算法称为递归算法。
用函数自身给出定义的函数称为递归函数。
二要素:边界条件和递归方程
1.1阶乘函数
当n=0,n!=1;
当n>0,n!=n*(n-1)!
#include<iostream>
using namespace std;
int factorial(int n)
{
if(n==0) return 1; /*边界条件*/
else return n*factorial(n-1); /*递归方程*/
}
int main() /*以下算法调用过程类似,不再给出*/
{
int result;
int n;
while(cin>>n)
{
result = factorial(n);
cout<<result<<endl;
}
return 0;
}
1.2 Fibonacci 数列
当n=0||n=1,F(n)=1;
当n>=2,F(n)=F(n-1)+F(n-2)
int Fibonacci(int n)
{
if(n<=1) return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
1.3 排列问题–全排列
设·R={r1,r2,r3,…,rm}为要进行全排列的m个元素,Perm(R)为集合R的全排列&#x