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

    // 判断一个数是不是回文数 
    
        
    // 方法一:先将数字转换成字符串,然后依次判断第一个和最后一个数字,第二个和倒数第二个数字...是否相等
    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 不是回文数
    
    
    // 方法二:方法一的另一种写法
    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 不是回文数
    
    
    // 方法三: 将判断的数倒置,然后判断前后两个数是否相等
    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);
    
    
    
    
    // 斐波那契数列: 输出前n个数
    /*
        斐波那契数列:1、1、2、3、5、8、13、21、34、……
        函数:使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。
    */
    
    // 递归: 求第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);
时间: 2025-01-03 15:55:46

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

数楼梯——恶心的高精斐波那契数列

题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入输出格式 输入格式: 一个数字,楼梯数. 输出格式: 走的方式几种. 输入输出样例 输入样例#1: 4 输出样例#1: 5 说明 用递归会太慢,需用递推 (60% N<=50 ,100% N<=5000) 啊啊,数据太大了! 肿么办?! 当数据等于5000时的斐波那契数为 62763028004889570860352531083496840554785287027364574390258

Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列

一.水仙花数 1.啥是水仙花数? 水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 2.利用JS实现对水仙花数的寻找. 这一次我们寻找水仙花数的方法,是JS中非常基础的while循环.代码如下: si不si很神奇~ 二.斐波那契数列 1.啥是斐波那契数列? 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

斐波拉契数列(用JavaScript和Python实现)

1.用JavaScript 判断斐波拉契数列第n个数是多少 //需求:封装一个函数,求斐波那契数列的第n项 //斐波拉契数列 var n=parseInt(prompt("输入你想知道的斐波那契数列的第几位数")); document.write(f(n)); function f(n){ if (n>=3) { var a=1; var b=1; for(var i=3;i<=n;i++){ var temp=b; b=a+b ; a=temp; } return b;

JavaScript 斐波那契数列 倒序输出 输出100以内的质数

|--斐波那契数列 1 //求斐波那契数列第n位 2 var n = parseInt(window.prompt('输入你要求的斐波那契数列的位数')); 3 var first = 1, 4 second = 1, 5 third; 6 if (n > 2) { 7 for (var i = 0; i < n - 2; i++) { 8 third = first + second; 9 first = second; 10 second = third; 11 document.writ

用for循环和递归调用写出1~N的斐波那契数列的和 和第N位的数

首先注意: 代码是从上往下,从左往右执行的!! 这是for循环写的 m=任意数.代表1~多少位的和 public class Fei_Bo_Na_Qi{    public static void main(String[] args){        int m = 30;  //这里代表1~30位的和        System.out.println( "斐波那契数列的第 "+m+" 位数为: "+m1(m) );//  在输出的时候调用函数    }   

javascript求斐波那契数列

斐波那契数列:1,1,2,3,5,8,.... <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>斐波那契数列</title> <style type="text/css"> html,body{ padding: 0;margin: 0; width: 100%; heig

给定斐波那契数列的项数求对应的数值的普通方法和优化处理

1 /** 2 给定斐波那契数列的项数求对应的数值 3 参考:剑指Offer 4 */ 5 #include <stdio.h> 6 7 int fib(int n); 8 long long fibonacci(unsigned int n); 9 int main(int argc, const char * argv[]) { 10 11 int n; 12 13 while (1) { 14 15 printf("请输入你想知道到的斐波那契数列的项数:\t"); 1

一起talk C栗子吧(第四回:C语言实例--斐波那契数列)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们说的是求阶乘的例子,这一回咱们说的例子是:斐波那契数列. 看官们,斐波那契数列是以数学家斐波那契数列的姓来命名的.斐波那契数列的定义:数列的第0项和第1项 为1,第n项为第n-1项和第n-2项的和.用数学公式表示出来就是:f(n)=f(n-1)+f(n-2),其中(n>1),f(n)=1;(n=0,1). 看官们,我在程序中使用了递归