計算第幾天?
1,年份算是否是閏年,確認2月份的天數
2,得到每個月的天數,可以放數組裏
3,根據月份得到當前月份的天數
4,根據日期加3得到的天數就ok了。
function isLeapYr(yr) {
//判斷閏年
return (yr % 4 === 0 && yr % 100 !== 0) || (yr % 100 === 0 && yr % 400 === 0);
}
function count(y, m, d) {
var mdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var mSum = 0;
var sum = 0;
//如果是閏年的話,那麼2月份就應該有29天
isLeapYr(y) ? mdays[1] = 29 : mdays[1];
//計算該月份之前的總天數,比如m=3,那麼就計算1和2月的總天數
for (var i = 0; i < m - 1; i++) {
mSum += mdays[i];
}
//加上當月天數
sum = mSum + d;
return sum;
}
//彈出年、月、日輸入框,聲明年魚兒,並賦值
var y =parseInt(prompt("請輸入你的出生年份"));
var m = parseInt(prompt("請輸入你的出生月份"));
var d =parseInt(prompt("請輸入你的出生日期"));
//月
//求各月份數字之和
var getMonth=new Array(31,28,31,30,31,30,31,31,30,31,30);
var sum1=0,i;
for(i=0;i<m-1;i++){
sum1+=getMonth[i]
}
//年
//判斷年是否爲閏年,是且大於2月份加一
if(( y%400 ==0||(y % 4 == 0&& y%100 !=0))&& m > 2){
sum=sum1 + d +1;
document.write("該天爲一年中的第"+sum+"天");
}else{
sum=sum1+d;
document.write("該天爲一年中的第"+sum+"天");
}
利用時間函數進行計算
var now = new Date();//輸入日期以今日爲例
var NewYearsDay = new Date(now.getFullYear(), 0, 0, 0, 0, 0);//該年第一天
console.log((now.getTime()-NewYearsDay.getTime())/86400000>>>0)//算出兩者的時間戳之差就是時間差的微秒數 再用時間差除以天的微秒數86400000 取整 就是第幾天
var endDate = new Date(y, m-1, d),
startDate = new Date(y, 0, 0),
days = (endDate - startDate) / 1000 / 60 / 60 / 24;
document.write("該天爲一年中的第"+ days +"天");
JS實現階乘
//while循環實現
function calNum(n) {
var product = 1;
while(n > 1){//1*5*4*3*2,1*n*(n-1)*(n-2)*...*2
product *= n;
n--;
}
return product;
}
console.log(calNum(5))
//for循環實現
function calNum(n){
var a = 1, str = '1*';
for (var i = 2; i <= n; i++) {
str += i + '*';
a *= i;
}
str = str.substr(0,str.length-1);
return str + '=' +a;
}
console.log(calNum(5));
判斷素數
var prime = function(len){
var i,j;
var arr = [];
for(i = 1; i < len; i++){
for(j=2; j < i; j++){
if(i%j === 0) {
break;
}
}
if(i <= j && i !=1){
arr.push(i);
}
}
return arr;
};
console.log(prime(100));
js斐波那契數列求和
遞歸算法
時間複雜度爲O(2^n),空間複雜度爲O(n)
function recurFib(n) {
if (n < 2) {
return n;
}
else {
return recurFib(n-1) + recurFib(n-2);
}
}
alert(recurFib(10));//將顯示55
動態規劃
時間複雜度爲O(n),空間複雜度爲O(n)
function dynFib(n) {
var res = [1,1];
if (n == 1 || n == 2) {
return 1;
}
for (var i = 2; i < n; i++) {
val[i] = val[i-1] + val[i-2];
}
return val[n-1];
}
alert(dynFib(10));//將顯示55
迭代法
時間複雜度爲O(n),空間複雜度爲O(1)
function iterFib(n){
var last=1;
var nextlast=1;
var result=1;
for(var i=2;i<n;i++){
result=last+nextlast;
nextlast=last;
last=result;
}
return result;
}
alert(iterFib(10));//將顯示55
質數
function foo(n){
var a=[],state=0;
for(var i=2;i<n;i++){
var sqrt_i = Math.sqrt(i);
if(i%sqrt_i===0){
continue;
}
for(var j=2;j<sqrt_i;j++){
if(i%j===0){
state=1;
break;
}else{
state=0;
}
}
if(state===0){
a.push(i);
}
}
console.log(a);
}
foo(100)