假设题目是有N层台阶,每次可以走一层或者两层,总共有几种走法。
首先我们不能简单的想到从小到大来求解,这种题需要用到数学归纳法,要先从N开始求解。首先想到既然要到N层,他能怎么到呢?只能是从第N-1层走一层到达N层,或者从N-2层一次走两层到达N层,只有这两种走法,所以我们很自然的想到f(n) = f(n-1) + f(n-2)了。然后我们很轻松的知道f(1) = 1,f(2) =2

function f(n) {
    if(n < =1) return 1;
    if(n===2) return 2;
    return f(n-1) + f(n-2)
}

是不是看到了斐波那契数列了?
那尾调用优化肯定要问的

function f(n, a = 1, b =1) {
    if(n <=1) return b;
    return f(n – 1, b, a + b);
}

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据