9种基本算法_递归

来源:互联网 发布:unity3d棋牌游戏源码 编辑:程序博客网 时间:2024/05/16 08:00

递归思想:直接或间接的调用自身。算法简洁易懂,但是耗费资源,效率低。


递归特点:1、一般通过函数实现

                  2、在函数内部直接或间接调用本身

                  3、把问题转化为规模缩小的同类子问题,然后递归调用函数

                  4、必须有一个递归出口


实例:汉诺塔

有三个柱子a、b、c,第一个柱子上有64个盘子,从上往下越来越大,把第一个柱子上的盘子全部移到第三个柱子上。


第一步:把前63个盘子移到b上

第二步:把前62个盘子移到c上

第三步:把前61个盘子移到b上

第四步:把前60个盘子移到c上

.......

第63步:把第一个盘子移到b上

void move(int n , char a,  char b , char c){    if(n == 1){        cout<<a<<"->"<< c<<endl;    }else{        move(n-1,a,c,b);        cout<<a<<"->"<< c<<endl;        move(n-1,b,a,c);    }}

实例:阶乘

计算n!

int fun(int n){if(n<=1)return 1;return n*fun(n-1);}



0 0
原创粉丝点击