美文网首页
递归实现总结

递归实现总结

作者: KeDaiBiaO1 | 来源:发表于2017-09-28 10:16 被阅读0次

    总结一下效率低的递归实现(虽然效率低,但是因为这是一种紧凑的实现还可以用线性规划来优化)
    分治递归就不总结了 ,总结一下子问题包含子子问题的那种递归
    比较典型的问题有背包问题(《算法:C语言实现 1-4》)和钢条切割问题(《算法导论》

    1. 递归调用的那个方法的返回其实是上一次的结果(我理解的不一定对)
    //背包问题  注释掉的是书中的实现  但是我觉得改成①更容易理解  这也是算法导论里面的写法
            for(i = 0, max = 0 ; i < items.length ; i++){
                if((space = cap - items[i].size) > 0){
    //              if((t = knap(space) + items[i].val) > max){
    //                  max = t;
    //                  System.out.println(max);
    //              }
                    max = max(max, knap(space) + items[i].val);//①
                    
                }
            }
    //钢条切割
            for (int i=1;i<=n;i++){
                q=max(q,p[i]+cut_rod(p,n-i));
                if (i==n){
                    System.out.println("最优解 : "+q);
                }
    
            }
    
    

    递归实现是自顶向下的,每次调用会返回上一次的结果 所以max()方法中就是用此时的最大值和 上一次+这一次(背包必须容量够才可以) ,返回两个的较大值

    相关文章

      网友评论

          本文标题:递归实现总结

          本文链接:https://www.haomeiwen.com/subject/zprmextx.html