1、arguments的使用
JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。
也就是说所有函 数都内置了一个arguments对象(是每一个函数里的内置的对象),arguments对象中存储了传递的所有的实参。
arguments是一个伪数组,因此及可以进行 遍历(arguments对象可以进行遍历)。
arguments 是一个对应于传递给函数的参数的类数组对象。
案例:
1.任意个数的一组数中的最大值。
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//arguments
//任意个数中的最大值
function test(){
var max=arguments[0];//定义一个最大值
for(var i=0;i<arguments.length;i++){
//console.log(arguments[i]);
if(max<=arguments[i]){
max=arguments[i];
}
}
// console.log(arguments.length);
console.log(max);
}
test(12,23,31,40,5,1000,50000,2568);//不管括号内的数值怎么变化,都会选择值最大的那个
</script>
</body>
</html>
2.求任意个数的和
代码如下:
function test(){
// var max=arguments[0];
var sum=0;
for(var i=0;i<arguments.length;i++){
// sum+=i i代表的仅仅是循环的次数,并不表示循环的次数,即仅仅是sum=sum+8的一个值
sum+=arguments[i];
}
console.log(sum);
}
test(12,23,31,40,5,1000,50000,2568);
for循环的执行顺序,先执行前两个,然后执行循环体,之后再执行i++
3、求斐波那契数列Fibonacci中的第n个数是什么?1 1 2 3 5 8 13 21 34 .....
例:求第25个的数是多少
代码如下:
function test(n){
var a=1;
var b=1;
var sum=0;
for(var i=3;i<=n;i++){
sum=a+b;
a=b;
b=sum;
}
console.log(sum);
}
test(25);
// test(n);需要第多少位,可以直接将n替换为该整数
递归算法
什么是递归?
递归本质上是将原来的问题,转化为更小的同一问题 ,即 一个函数不断的调用自己。
递归的三要素:
- 一个问题的解可以分解为几个更小的同一个题的解
- 分解后的子问题只是在数据上存在不一样的问题而已。
- 递归存在终止递归条件。
递归算法的实现:以阶乘算法实现。
递归的核心:递和归,往返的一个过程,函数中调用函数。
需要写开始条件和结束条件,如果不写结束,会陷入无尽的循环之中。
例如:盗梦空间中,会陷入梦境为递,醒来为归。