对于这种情况,其实我们是可以考虑自底向上的做法的 。例如我知道
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 点赞一波!
【为什么你学不会递归?】
推荐阅读
- 梦见英语考试不及格 梦见英语考试不会做题抄同学的
- 淘宝上传的营业执照怎么撤销 淘宝店铺营业执照到期会不会下架所有产品
- 为什么锂离子电池会爆炸?
- 《明星大侦探6》回归,观众期待又忐忑,但第一期绝不会让人失望
- 淘宝开店会不会有什么风险 开淘宝店会遇到哪些问题
- 婴儿床多大尺寸实用,婴儿床100×56会不会太小
- 遮光帘会不会让人很热,遮光帘会隔热吗
- 白玦景昭大婚在第几集 千古玦尘白玦为什么娶景昭
- 太平花为什么会烂根,太平花根烂怎么处理能救活
- 为什么喝柠檬水反而尿酸高,长期喝柠檬水降尿酸吗