斐波那契数列的普通解法

题目描述

用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等

 本来按照牛客网那些解题思路,啥递归啊啥的,我也想那样写啊,咱不会啊,n-1、n-2啊啥的,说白了 递归不就是从未知数n的位置往回推算每一个斐波那契数么,就例如n=10,从10的位置往回找,到那两个已知数值的位置再停下来,然后再一个个加,f(3)=f(1)+f(2),f(4)=f(3)+f(2),...,那还不如直接从头开始加算了,所以我的解法是

function fibonacci(n) {
    var arr=[1,1]
    for(var i=2;i<n;i++){
	    arr.push(arr[i-1]+arr[i-2])
    }
    return arr[n-1]
}

直接声明一个带元素的数组

然后将n作为遍历的次数来进行循环,只要还没达到n次,每循环一次就往arr数组添加一个新元素,值为arr[i-1]+arr[i-2],这个不难理解吧

上面的解法有点问题!

因为上面的解法中我并没对传入的参数n做判断,假如!假如n它就是比2小呢,那上面的代码它会输出什么?对吧,这代码不够完善,那就修改修改

function f(n) {
			    var arr=[0,1];
				if(n>1){
					for(var i=2;i<n;i++){
					    arr.push(arr[i-1]+arr[i-2])
					}
					console.log(arr);
					return arr[n-1]
				}else{
					if(n>=0&&n<2){
						return arr[n]
					}else{
						console.log("不可输入负数")
					}
				}
			}
			console.log(f(10),f(1),f(0));

在上面的代码中对n进行了判断,这个比较完善,但代码结构稍微有点乱,需要再优化下。

优化代码(2021-10-13)

function fibonacci(n) {
    var arr=[1,1]
    if(n<1) return 0;
    if(n==1 || n==2) return arr[n-1];
    for(var i=2;i<n;i++){
	    arr.push(arr[i-1]+arr[i-2])
    }
    return arr[n-1]
}

以后我再补充递归的解法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值