斐波那契

创建数组

function fbnq1(No) {
    let arr = [1, 1];
    if (No <= 2) return 1;
    // 第5个数 算出 下标为4的数 数组长度为5
    while (arr.length < No) {
        // 获取第几项那就计算最后一项的值 直到数组有几项
        // 计算倒数第一项和倒数第二项的和 产生新的值
        arr.push(arr[arr.length - 1] + arr[arr.length - 2]);
    }
    //返回计算好的最后一项
    return arr;
    // return arr[arr.length - 1];
}

console.log(fbnq(1)); // 1
console.log(fbnq(2)); // 1
console.log(fbnq(3)); // 2
console.log(fbnq(4)); // 3
console.log(fbnq(5)); // 5
console.log(fbnq(6)); // 8
console.log(fbnq(7)); // 13
console.log(fbnq(8)); // 21
console.log(fbnq(9)); // 34
console.log(fbnq(10)); // 55
console.log(fbnq(11)); // 89

递归方式

function fbnq(No) {
    if (No <= 2) return 1;
    // 第一个数,第二个数 , 当前是第几个数字
    function fn(last1, last2, curNo) {
        if (curNo >= No) {
            return last2;
        } else {
            // 原来的第二个数作为第一个数
            // 加和的最新数作为第二个数
            // 递归计算下一个数 + 1
            return fn(last2, last1 + last2, curNo + 1);
        }
    }
    return fn(1, 1, 2);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容