算法设计与分析-动态规划.pptVIP

  • 57
  • 0
  • 约4.74万字
  • 约 247页
  • 2016-11-05 发布于北京
  • 举报
算法设计与分析-动态规划,动态规划算法,动态规划算法例题,java动态规划算法,贪心算法动态规划,01背包动态规划算法,动态规划算法基本步骤,动态规划算法基本要素,动态规划和贪心算法,动态规划算法视频讲解

要统计计算fib(n)需要递归调用fibonacci函数的次数,只要增加一个全局变量即可。 Num=0; int fibonacci(int n) {Num++; if (n = 1) return 1; return fibonacci(n-1)+fibonacci(n-2); } 如果我们调用fib(5),将产生一棵对于同一值重复计算多次的调用树: fib(5) fib(4) + fib(3) (fib(3) + fib(2)) + (fib(2) + fib(1)) ((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) (((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) 特别是,fib(2)计算了3次。在更大规模的例子中,还有更多fib的值被重复计算,将消耗指数级时间。 从上图可知,同一个值被计算了多次,如fib(3)计算了3次,fib (2)计算了5次,也就是说随着程序的运行,进行了很多冗余的计算,也就是计算那些已经知道答案的值,这就产生了重叠,相互之间共享了一些数据,实际上,它们之间共享了很多数据。这种情况很普遍。解决的

文档评论(0)

1亿VIP精品文档

相关文档