[关闭]
@XQF 2018-03-07T23:03:12.000000Z 字数 321 阅读 778

与复杂度有关的问题

数据结构与算法


image_1bp1fnfu92cc15vhchejch20s9.png-51.1kB

image_1bp1jo68kjempfe1tddg6es0q9.png-45.7kB

image_1bp1jpl2k17em142b1t0j102917ni13.png-93.9kB

  1. 以斐波那契数列为例子
  2. 普通的递归版本
  3. int fab(int n){
  4. if(n<3)
  5. return 1;
  6. else
  7. return fab(n-1)+fab(n-2);
  8. }
  9. 具有"线性迭代过程"特性的递归---尾递归过程
  10. int fab(int n,int b1=1,int b2=1,int c=3){
  11. if(n<3)
  12. return 1;
  13. else {
  14. if(n==c)
  15. return b1+b2;
  16. else
  17. return fab1(n,b2,b1+b2,c+1);
  18. }
  19. }
  20. fab(4)为例子
  21. 普通递归fab(4)=fab(3)+fab(2)=fab(2)+fab(1)+fab(2)=3 6次调用
  22. 尾递归fab(4,1,1,3)=fab(4,1,2,4)=1+2=3 2次调用
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注