js实现返回斐波那契数列的第n个值的函数(基础面试题三)

题目:实现一个函数,输入一个数字n能返回斐波那契数列的第n个值。

首先我得先知道斐波那契数列到底是个啥东西,不然这题无法下手。斐波那契数列的介绍这里不再赘述,大家自行google,这里只说明其核心知识,就是一个公式:f(n)=f(n-1)+f(n-2).

分析:

1)从公式上我们可以看出,斐波那契数列从第三个数开始,每个数都是前两个数的和。即1,1,2,3,5,8,13,21,34,55...等,而对应的n的值为1,2,3,4,5,6,7,8,9,10.题目的意思是,只要给函数输入一个数字,然后输出这个数字对应斐波那契数列的值。比如输入7,则函数输出结果为13;输入10,输出55等

2)如果对函数的调用不太熟悉的同学,可能这道题你想破脑袋也想不出来,但凡对函数有一定认识的同学,这题也比较容易做出来

3)首先,我们肯定要把特殊的给独立出来做个判断,哪些数字是特殊的呢?很明显是斐波那契数列的前两项,而斐波那契数列的前两项都为1

4)然后再对后面的进行累加处理,根据公式我们很容易就知道,怎么实现累加呢?就是函数调用函数它自己本身累加

代码实现如下:

function getFBN(n){
    if (typeof n !== "number" || n < 1) {
	return n;
    }else if (n <= 2) {
	return 1;
    }
    return getFBN(n-1) + getFBN(n-2);
}
console.log(getFBN(-1));//-1
console.log(getFBN(1));//1
console.log(getFBN(2));//1
console.log(getFBN(3));//2
console.log(getFBN(4));//3
console.log(getFBN(7));//13
console.log(getFBN(15));//610
console.log(getFBN(25));//75025
console.log(getFBN('asd'));//asd

这里大家先提示一下大家,如果大家在测试的时候千万不要测试数字在10000以上的数据,不然电脑会卡死的噢,而且最后输出的数据会很大很大,会超过计算范围。

总的来说,这题并不难,只要联想到函数调用自己本身就好了。如果大家有更好的方法,欢迎留言。

该题来源于微信公众号:较真的前端



猜你喜欢

转载自blog.csdn.net/charles_tian/article/details/79919452
今日推荐