题意: 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?

这个题目是经典的递归、递推问题。

这里先说说递归的思想吧。

我们令f(n)表示n步台阶的走法。那么要走到n步之前只有两种情况。一种是走到了n-1步台阶上,另一种是走到了n-2步台阶上。

于是我们有了方程: f(n) = f(n-1) + f(n-2)

这个时候我们只需要手算一下n=1有几种走法,显然一种。手算一下n=2有几种走法,显然两种。

(defun step-method (n)
    (if (= n 1)
        1
        (if (= n 2)
            2
            (+ (step-method (- n 1)) (step-method (- n 2))))))

(format t "~D~%" (step-method 10))