为什么你学不会递归?( 四 )


对于这种情况,其实我们是可以考虑自底向上的做法的 。例如我知道
f(1) = 1;
f(2) = 2;
那么我们就可以推出 f(3) = f(2) + f(1) = 3 。从而可以推出f(4),f(5)等直到f(n) 。因此,我们可以考虑使用自底向上的方法来取代递归,代码如下:
1public int f(int n) { 2 if(n <= 2) 3 return n; 4 int f1 = 1; 5 int f2 = 2; 6 int sum = 0; 7 8 for (int i = 3; i <= n; i++) { 9 sum = f1 + f2;10 f1 = f2;11 f2 = sum;12 }13 return sum;14 }这种方法,其实也被称之为递推 。
最后总结
其实,递归不一定总是从上往下,也是有很多是从下往上的,例如 n = 1 开始,一直递归到 n = 1000,例如一些排序组合 。
说实话,对于递归这种比较抽象的思想,要把他讲明白,特别是讲给初学者听,还是挺难的,这也是我这篇文章用了很长时间的原因,不过,只要能让你们看完,有所收获,我觉得值得!最后如果觉得不错,还请给我转发 or 点赞一波!

【为什么你学不会递归?】


推荐阅读