递归算法与动态规划算法是计算机程序设计、数据结构中常见算法。有些书籍教材中对递归算法与动态规划算法比较时,总是指出动态规划算法优于递归算法,在问题较为复杂时不建议使用递归算法。本文主要以在实际问题解决过程中对递归算法与动态规划算法进行比较,判断其时间复杂度。
1、问题
假设某人爬楼梯,一次只能攀爬1台阶或者2台阶,某楼梯共有N阶,请计算该人爬上N阶楼梯一共有多少种方法?
2、递归算法
该问题与斐波那契数列十分类似,是一道地地道道的递归题目,因此可以直接使用递归算法实现问题求解。编写函数如下:
3、动态规划算法
解决爬楼梯问题采用动态规划算法则可以从1层开始,计算到N层每层能够到达的方法,设计a,b两变量时刻表示到达每一层K前的两层,a是到达k-2层的方法ÿ