问题:
给出一个数字,找出它是斐波那契数列中的第几个数
斐波那契数列 [1, 1, 2, 3, 5, 8, 13, ...]
,后一个数字是前两个数字之和
输入的数字大于等于 2
如果输入数字不存于斐波那契数列中,返回 -1
function demo(num) {
//初始数据
const start = [1, 1]
const res = DiGui(start, num)
return res
}
function DiGui(start, num) {
const end = start[0] + start[1]
if (end === num) {
//找到了,输出
return end
} else if (end > num) {
//不存在
return -1
} else if (end < num) {
//继续找
return DiGui([start[1], end], num)
}
}
console.log(demo(5))//5
console.log(demo(13))//13
console.log(demo(9))//-1
一只青蛙跳台阶,可以一次跳1台阶,也可以一次跳两个台阶。
跳一个台阶 就一个方法,蹦一个台阶。
跳两个台阶,就两个方法,蹦一个台阶或蹦两个台阶。
跳三个台阶,就三个方法,一次蹦一阶蹦三次,蹦一节跳两阶,跳两阶蹦一阶。
1 2 3 5 8