算法与数据结构基础 - 递归(Recursion)
递归基础 递归(Recursion)是常见常用的算法,是DFS、分治法、回溯、二叉树遍历等方法的基础,典型的应用递归的问题有求阶乘、汉诺塔、斐波那契数列等, 可视化过程 。 应用递归算法一般分三步,一是定义基础条件(base case),二是改变状态、向基础条件转移,三是递归地调用自身。例如 LeetCode题目 1137. N-th Tribonacci Number: // 1137. N-th Tribonacci Numberprivate: vector<int> nums={0,1,1}; //基础条件 int maxN=2; public: int tribonacci(int n) { if(n<=maxN) return nums[n%3]; //改变状态、递归地调用自身 nums[n%3]=tribonacci(n-3)+tribonacci(n-2)+tribonacci(n-1); maxN=n; return nums[n%3]; } 相关LeetCode题: 1137. N-th Tribonacci Number 题解 938. Range Sum of BST 题解 779. K-th Symbol in Grammar 题解 894. All Possible Full Binary Trees 题解 776. Split BST 题解 247.