要求:不使用全局变量,调用该函数并传数字n,需做严谨性判断,结果返回第n位数。
方法一:使用递归的思想,动态规划的知识。第n项是第n-1项和第n-2项的和。
function Feibo(n) {
if (typeof n !== 'number' || n <= 0) return false;
if (n === 1 || n === 2) return 1;
return Feibo(n - 1) + Feibo(n - 2);
}
方法二:使用for循环,第3项 = 第1项(1)+ 第二项(1),只需要循环 3 - 2 = 1 次。
function Feibo(n) {
if (typeof n !== 'number' || n <= 0) return false;
if (n === 1 || n === 2) return 1;
if (n > 2) {
let result = null,
prev = 1,
next = 1;
for (let index = 0; index < n - 2; index++) {
result = prev + next;
prev = next;
next = result;
}
return result;
}
}