day31 | 一探动规
刚开始的动规几道题基本都是爬楼梯的变形。
这题主要问题的到达的是下标为 n 的位置而不是n-1,所以列 dp 的时候空间要给大一下。
然后既然到 fib 数了就复习一下尾递归的知识.
常规递归的过程是:每次函数调用时需要记录当前函数上下文的信息,包括传入参数、局部变量值等,并将这些信息保存在栈空间(也称调用栈或运行时栈)中。
举个例子来说。
- 当一个函数 fib 返回值是 fib(n-1)+fib(n-2)时,函数结束前需要执行相加的操作,所以编译器不会丢弃掉这些信息。
- 而如果返回值是fib(n-1,ret2,ret1+ret2)就不用保存原函数的信息,就可以减少栈空间,防止stackoverflow