前端面试现场编程(我太菜了)

1.找出数组中相加之和为10的两个数,将其下标输出,若没找到返回[-1,-1] ?

 //找出数组中相加之和为10的两个数,将其下标输出,若没找到返回[-1,-1]
    let arr = [1,5,3,7,5,9,2,4];
    // let arr = [1,12,3,6,5,8,3,10];
    function test(target) {
        let res = [];//保存结果的数组
        for (let i = 0; i < arr.length;i++){
            for (let j = i + 1;j < arr.length;j++){
                if (arr[i] + arr[j] === target){//若加起来等于target,则push到res里面
                    res.push({i:i,j:j});
                }
            }
        }
        if (res.length === 0){//循环结束后,判断是否有结果
            res.push({i:-1,j:-1});
        }
        return res;
    }
    let res = test(10);
    console.log(res);

2.斐波那契数列 1,1,2,3,5,8…
写出函数,要求找到第n位是多少

递归

	function Fibnnacci(n) {
        if(n === 0 || n === 1) return 1;
       return Fibnnacci(n - 1) + Fibnnacci(n - 2);
    }
    console.log(Fibnnacci(5));

非递归

 /**
     * @return {number}
     */
    function Fibnnacci(n) {
        if (n === 0 || n === 1) return 1;
        let first = 1,second = 1;
        let result;
        for (let i = 2; i <= n ;i++){
            result = first + second;
            first = second;
            second = result;
        }
        return result;
    }
    console.log(Fibnnacci(5));

3.打乱数组


发布了70 篇原创文章 · 获赞 7 · 访问量 9216

猜你喜欢

转载自blog.csdn.net/qq_41893334/article/details/100732473