zoukankan      html  css  js  c++  java
  • javascript:算法之斐波那契数列

    //1,1,2,3,5,8,13,21这个数列 斐波那契 数列(肥波哪弃)
    //得到第9项是几?
    /*******************************111111111递归的思想***********************************/
    function digui(index){
    	//index-2=0 index的最小值是3  
    	if (index<0) { //负数为0 我自己写的
    		return 0;
    	}
    	if (index<=2) {//第一项 第二项都为1,直接范围内 都返回1  终止条件 这是第二步!!!
    		return 1;
    	}
    	return digui(index-1)+digui(index-2);//先看后面的 几项,当前项=前一项+前二项 这是第一步!!!!
    }
    console.log(digui(-1));//0
    console.log(digui(7));//13
    console.log(digui(8));//21
    

    /*******************************2222222迭代(循环)的思想***********************************/
    /*
    反正不好理解,记住就好了。
    1 1 2 三个数的话,前2个数 ,1和1,需要循环1次 得到2
    1 1 2 3 四个数的话,前3个数 ,1和1和2,需要循环2次(在上次循环次数+再和第三个数循环一次)  得到结果3
    ....    n个数需要循环n-2次
    
    3个值的故事,加上 循环次数 的搞鬼
    
    //索引必须从3开始最好了(包含),因为已经设置 1 2了
    //index为1 2,是不对的 因为循环没走 我还是返回的thirdnumResult=0;
    */
    function forloop(index){   //刚
    	var firstnum=1; //第一个值
    	var secondnum=1;//第二个值
    	var thirdnumResult=0;//结果  第三个值
    	for (var i = 0; i < index-2; i++) {  //循环1次,得到第三个数  2次得到第四个数    index-2次得到第index个数
    		thirdnumResult=firstnum+secondnum;  
    
    		firstnum=secondnum;       //现在的3个值的第一个,已经变成了原来三个中的第二个
    		secondnum=thirdnumResult;//现在的3个值的第二个,已经变成了来三个中的第三个,结果
    	}
       return thirdnumResult;
    }
    console.log(forloop(-1));//0
    console.log(forloop(1));//0
    console.log(forloop(2));//0
    console.log(forloop(3));//2
    console.log(forloop(8));//21
    //必须从3开始最好了,因为已经设置 1 2了
    //index为1 2,是不对的 因为循环没走 我还是返回的thirdnumResult=0;
    
  • 相关阅读:
    用orgmode写加密日记
    用emacs加密文件(使用ccrypt)
    C#使用注册表添加删除开机启动项
    WPF中使用第三方字体选择器
    使用rdesktop远程连接Windows桌面
    webbrowser 提交按钮没反应的问题解决办法
    C#中webBrowser加载页面中的不同域的iFrame的源代码的取得
    C# 天涯博客验证码识别(转)
    webbroser 清除COOKIES的解决办法
    使用C#实现ADSL自动拨号
  • 原文地址:https://www.cnblogs.com/leee/p/5550850.html
Copyright © 2011-2022 走看看