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>