几个js函数

  1 <!DOCTYPE html>

  2 <html xmlns="http://www.w3.org/1999/xhtml">

  3 <head>

  4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  5     <title>函数</title>

  6 </head>

  7 <body>

  8     <script type="text/javascript">

  9     //使用 for 循环、while 循环和递归写出 3 个函数来计算给定数列的总和。

 10     var a1 = [1,2,3,4,5,6,2,3,4,5,6,3666666];

 11     function sum(m){

 12         var len = m.length;

 13         var result = 0;

 14         for(var i=0;i<len;i++){

 15                  result = result+m[i];

 16         }

 17         alert('使用 for 循环弹出的结果'+result);

 18     }

 19     sum(a1);

 20     function sum1(n){

 21         var len = n.length;

 22         var result = 0;

 23         var i = 0;

 24         while(i<len){

 25             result = result+n[i];

 26             i++;

 27         };

 28         alert('使用 while弹出的结果'+result);

 29     }

 30     sum1(a1);

 31     function sum2(p,n){

 32         if(n<0){

 33             return 0;

 34         }else{ 

 35             return p[n]+arguments.callee(p,n-1);

 36         }

 37     }

 38     alert('使用递归弹出的结果'+sum2(a1,a1.length-1));

 39     //编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。

 40     var a2 = ['a','c','e','g','i'];

 41     var a3 = ['b','d','f','h','j'];

 42     function add(m,n){

 43         var a4 = [];

 44         if (m.length>0&&n.length>0) {        

 45             for (var i=0; i<m.length;i++) {                            

 46                     a4.push(m[i]);

 47                     a4.push(n[i]);

 48             };

 49             return a4;            

 50         }else if(m.length=0){

 51             return n;

 52         }else if (n.length=0){

 53             return m;

 54         };

 55     }

 56     alert(add(a2,a3));

 57     //编写一个计算前 100 位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是 0 和1,随后的每个数字是前两个数字的和。例如,前 10 位斐波那契数为:0,1,1,2,3,5,8,13,21,34。

 58     function fei(num){

 59         var result = [0,1];

 60         if(num>3){

 61             for (var i=2;i<num;i++) {

 62                 result[i] = result[i-1]+result[i-2];

 63             };

 64             return result;

 65         }else{

 66             return result;

 67         };

 68     }

 69     alert('前 100 位斐波那契数以此为:'+fei(100));

 70     // 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为 95021。

 71    

      var a5 = [98,89,9,8];
      function list(arr){
        var arr1 = [];
        for(var i=0;i<arr.length;i++){
        arr1.push(arr[i].toString());
      }
      function compare(str1, str2){
        if(str1+str2 < str2+str1){
          return 1;
        }else if(str1+str2> str2+str1){
          return -1;
        }else{
          return 0;
        }

        }
        alert('所能组成的最大数字是:'+arr1.sort(compare).join(''));
      }
      list(a5);

       

101     

102     // 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。

103     var str = "123456789";

104     var ways = [];

105     function exec(str, pre) {

106         var a = str.split("");

107         if( str.length === 2 ){

108             ways.push( pre + a.join("+") );

109             ways.push( pre + a.join("-") );

110             ways.push( pre + str );

111         }else{

112             var c = str.charAt(0),

113             s = str.substring(1);

114             exec( s, pre + c + "+" );

115             exec( s, pre + c + "-" );

116             exec( s, pre + c );

117         }

118     }

119     exec( str, "" );

120     for (var i = 0; i < ways.length; i++) {

121         if( eval( ways[i] ) === 100 ){

122             alert( ways[i] + " = 100" );

123         }

124     };

125     </script>

126 </body>

127 </html>

 

你可能感兴趣的:(js)