递归和分治思想

如果可以使用迭代,尽量别使用递归。由编译原理可以知道,每次自调用的时候,计算机都需要保存在调用,浪费时间空间。当然,迭代是当我们知道循环次数的时候。而当我们不知道循环次数,比如说对于文件夹和文件进行遍历,不知道深度的情况下,我们就需要递归来实现。

显然,递归是先解决小的问题,这种思想是分治思想。根据具体需求,来决定是否使用递归。

递归要注意:

  • 结构是选择结构,而迭代是循环结构

  • 必须有基线条件和递归条件,防止出现死循环

  • 如果知道循环次数的话,尽量使用递归

  • 对于某些编程式函数,有对于尾递归的迭代优化

  • 递归逻辑更容易理解

一些实例

逆序输出字符串

#include<iostream>using namespace std;void print(){    char a;    cin>>a;    if(a!='#') print(); // 不是停止符,先自调用 
    if(a!='#') cout<<a; //在回来的时候,打印自己的字符