1.对数组排序,由小到大,使用了冒泡排序
function sortArr(arr) {
arr=arr||[];
if(arr.length==0) return "It's an empty array";
for(var i=0;i<arr.length;i++){//控制趟数
var isSort=true;
for(var j=0;j<arr.length-1-i;j++) {//控制比较次数
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
isSort = false;//如果执行了,说明排序了,没有排好序
}
}
if(isSort){
break;
}
}
return arr;
}
console.log(sortArr([5, 2, 1, 4, 7, 6,9]));//Array(7) [ 1, 2, 4, 5, 6, 7, 9 ]
2. 求斐波那契数列(Fibonacci sequence )中的第n个数是多少?1 1 2 3 5 8 13.....
function getF(n) {
n=n||0;//为了排除 空字符串 null undefined null 0 (a||b 若a,b均为假,则取b)
if(n<0){ //小于零的数没有意义
return -1;
}
var n1=1,n2=1,sum=0;
for(var i=3;i<=n;i++){
sum=n1+n2;
n1=n2;
n2=sum;
}
return n2;//应该返回n2; 返回sum的话 前两个数无法正确输出
}
console.log(getF(2));b
3.输入某年某月某日,判断是这一年的第几天?
function getDays(year,month,day) {
var days=day;//总共有多少天
//如果是1月,直接返回天数
if(month===1){
return day;
}
//不是一月,累加之前月的天数并加该月的天数
var months=[31,28,31,30,31,30,31,31,30,31,30,31];
for(var i=0;i<month-1;i++) {
days += months[i];
}
if(month>2&&isRunNian(year)){
days++;
}
return days;
}
console.log(getDays(2016, 2, 4));
//判断是否是润年
function isRunNian(year) {
if((year%4===0&&year%100!==0)||year%400===0){
return true;
}else{
return false;
}
}
4.递归求n的各位数相加
解题思路:123 123%10=3 parseInt(123/10)=12 12%10=2 parseInt(12/10)=1 1%10=1 parseInt(10/10)=0
function getSumWei(n) {
if(n<10){
return n;
}
return n%10+getSumWei( parseInt(n/10));
}
console.log(getSumWei(123));