javaScript实现回文数、水仙花数判断和输出斐波那契数列

来源:互联网 发布:手机桌面控制软件 编辑:程序博客网 时间:2024/05/01 10:17

javaScript实现回文数、水仙花数判断和输出斐波那契数列

一、判断回文数

回文数: 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。

    //方法1: 用正则(少于80个字符的函数实现)    function isPalindrome(str) {           str = str.replace(/\W/g, '').toLowerCase();           return (str == str.split('').reverse().join(''));       }    console.log(isPalindrome("level"));                   // logs 'true'       console.log(isPalindrome("levels"));                  // logs 'false'       console.log(isPalindrome("A car, a man, a maraca"));  // logs 'true'    // 方法2:先将数字转换成字符串,然后依次判断第一个和最后一个数字,第二个和倒数第二个数字...是否相等    function PalindromeNumber1(num){        var str = num.toString();        var flag = true;        var len = str.length;        for(var i = 0; i < (len - 1) / 2; i++){            if( str.charAt(i) != str.charAt(len-i-1) ){                flag = false;                break;            }        }        if(flag){            console.log(num + " 是回文数");        }else{            console.log(num + " 不是回文数");                    }    }    PalindromeNumber1(123456321);  // 123456321不是回文数    // 方法3:方法一的另一种写法    function PalindromeNumber2(num){        var str = num.toString();        var flag = true;        var begin = 0, end = str.length - 1;          while( begin < end ){            if(str.charAt(begin) == str.charAt(end)){                begin ++;                end --;            }else{                flag = false;                break;            }        }        if(flag){            console.log(num + " 是回文数");        }else{            console.log(num + " 不是回文数");                    }    }    PalindromeNumber2(123456321);  // 123456321不是回文数    // 方法4: 将判断的数倒置,然后判断前后两个数是否相等    function InvertedNumber(num){         var nNum= 0;        while( num != 0){             nNum *= 10;            nNum = nNum + (nNum % 10);            num = Math.floor( num / 10 );         }        return nNum;    }    function PalindromeNumber3(num){        var nNum = InvertedNumber(num);  // 将一个数逆序        if( nNum == num){                // 判断逆置后的数是否和原来的数相同            console.log(num + " 是回文数");        }else{            console.log(num + " 不是回文数");         }    }    PalindromeNumber3(123456321);  // 123456321不是回文数

二、判断水仙花数

水仙花数: 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

    //  将数组转换成字符串,然后分别加上每个位置上的数n次幂    function NarcissusNumber(num){        var str = num.toString();        var len = str.length;        var result = 0;        for(var i=0; i<len; i++){            result += Math.pow(str.charAt(i), len);        }        if(result == num){            console.log(num + " 是水仙花数");        }else{            console.log(num + " 不是水仙花数");        }    }    NarcissusNumber(153);

三、斐波那契数列

斐波那契数列:指的是这样一个数列1、1、2、3、5、8、13、21、34、…… 这个数列从第3项开始,每一项都等于前两项之和。

    // 递归: 求第n个斐波那契数 ( 方法一 )    function fb1(n){         if( n==1 || n== 2){            return 1;        }        return fb1(n-1) + fb1(n-2);    }    // 输出前n个斐波那契数    function Fibonacci1(num){        console.log(1);        for(var i=2; i <= num; i++){            console.log(fb1(i));        }    }    Fibonacci1(5);    // 非递归: 求第n个斐波那契数 ( 方法二 )    function fb2(n){        var a =1, b =1, result=1;        for(var i =2; i<= n; i++){            result = a + b;            a = b;            b = result;        }        return result;    }    // 输出前n个斐波那契数    function Fibonacci2(num){        console.log(1);        for(var i=1; i < num; i++){            console.log(fb2(i));        }    }    Fibonacci2(5);   // 非递归:求第n个斐波那契数 ( 方法二 )   function fb3(n){       var result = [1,1];       if( n== 1 || n ==2){            return 1;       }       for(var i = 2; i < n; i++ ){            result[i] = result[i-1] + result[i-2];       }       return result[n-1];   }   // 输出前n个斐波那契数   function Fibonacci3(num){        console.log(1);        for(var i=1; i <= num; i++){            console.log(fb3(i));        }    }    Fibonacci3(5);
原创粉丝点击