高端大气网络设计建设公司网站织梦模板,沈阳模板建站哪家好,定西seo,成都市住房和城乡建设厅网站核心#xff1a;
所谓的递归函数就是在函数体内调用本函数。
注意问题#xff1a;
使用递归函数一定要注意#xff0c;处理不当就会进入死循环。递归函数只有在特定的情况下使用 #xff0c;比如阶乘问题
//递归算法测试 10的阶乘
function f(num){if(num1){return…核心
所谓的递归函数就是在函数体内调用本函数。
注意问题
使用递归函数一定要注意处理不当就会进入死循环。递归函数只有在特定的情况下使用 比如阶乘问题
//递归算法测试 10的阶乘
function f(num){if(num1){return 1;}else{return f(num-1)*num;}
}
console.log(10!的结果为f(10));
某大公司的面试题之一 //请实现一个fibonacci函数要求其参数和返回值如下所示
/***desc: fibonacci*param: count {Number}*return: result {Number} 第count个fibonacci值计数从0开始fibonacci数列为[1, 1, 2, 3, 5, 8, 13, 21, 34 …]则getNthFibonacci(0)返回值为1则getNthFibonacci(4)返回值为5*/
var getNthFibonacci function (Num) {var count parseInt(Num);if (isNaN(count) || count 0)return 0;if (count 1)return 1;return getNthFibonacci(count-1) getNthFibonacci(count-2);
};
//获取fibonacci数组的第 N 个值索引从0开始
console.log(getNthFibonacci(4));
//从第一个开始打印fibonacci数列长度是10
var arr [];
for (let i0 ; i10; i ){arr.push(getNthFibonacci(i))
}
console.log([ fibonacii length10 ] ,arr); 某大公司的面试题之二
//一共10级楼梯每次可以走一步或两步求一共多少种走法。
//思路
//
// 要想走到N(N10)级,可以分为2种情况。
//
// 从n-2级迈两步
// 从n-1级迈一步
//
// 那么对于n-2和n-1的情况也是各自分为两种以此类推。
//
// 那么走法的和就是n-2的走法和n-1的走法之和。
//
// 那么递归到最基本的当前人在第0阶台阶
//
// 第0阶台阶0
//
// 第1阶台阶1
//
// 第2阶台阶211或者2
//
// 得到公式也就是斐波那契数列。
var fib function (n){if(n 1){return 1;}else if(n2){return 2;}else if(n2){return fib(n-1) fib(n-2);}
}
console.log(fib(10)); 某大公司的面试题之三
//1个细胞一个小时分裂一次生命周期是3小时求n小时后容器内有多少细胞。
// 思路
//
// 细胞的生存周期是3个小时那我们就可以把细胞在题目中状态分为以下几个状态
//
// a刚分裂态——由前一小时的a,b,c分裂出
// b分裂1小时态——由前一小时a长成
// c分裂2小时态——由前一小时b长成
// d分裂3小时态——死亡的细胞。由前一小时c长成,和之前的d一起组成。
//
// 那么我们就可以根据细胞状态设定函数。分析每一个状态的来源是哪里即可。
//
// 容器中存活的细胞数目就是a、b、c三种状态数量的总和。
var afib function (n){if(n0){return 1;} //初始的那个细胞return afib(n-1)bfib(n-1)cfib(n-1);
}
var bfib function(n){if(n0){return 0;} //一个小时之后才会生成return afib(n-1);
}
var cfib function(n){if(n0||n1){return 0;} //前两小时还没生成return bfib(n-1);
}var time 3;
console.log(afib(time)bfib(time)cfib(time));
总结
递归的两个必要因素
递归方程即由需求抽象出来的一个类似数学上的通用公式如fn(n) fn(n-1) fn(n-2)。递归结束条件即阻止递归方程无限的循环下去。