<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    feng

    飄逸~~~~~life

    javascript求Fibonacci的問(wèn)題

    在學(xué)習(xí)javascript,一本書上后面有個(gè)習(xí)題:
    編寫一個(gè)計(jì)算Fibonacci數(shù)的程序,要求讓用戶輸入n值,并顯示計(jì)算結(jié)果。
    Fibonacci的定義為:Fn=Fn-1+Fn-2,F1=1,F2=1,n=3,4....前幾個(gè)Fibonacci數(shù)為:1,1,2,3,5,8,13........
    首先是我自己寫的
    <html>
    <head><script language="javascript">

    var a=1;
    var b=1;
    var i=2;
    var current;
    function dell(n){
      current=a+b;
       b=a;
       a=current;
       i++;
       if(i==n){
       return current;
        }
       else{
       return dell(n);
       }
     }
    </script></head>
    <body>
    <script language="javascript">
    var userinput=eval(prompt("請(qǐng)輸入N的置:",""));
    var total=dell(userinput);
    alert(total);
    </script>
    </body>
    </html>
    我里面dell函數(shù)的思路是用current來(lái)記錄當(dāng)前的Fibonacci的值,我初始了i=2,也就是沒(méi)有管n=1,2的時(shí)候,檢測(cè)i的值是否和n值相同,相同就返回當(dāng)前的
    current
    否則繼續(xù)遞歸dell函數(shù)
    我看了參考答案,是這樣寫的
    <html>
        <head><title> 7-4參考答案 </title>
        <script language=javascript>
            <!--
            function Fibonacci(n){  // 定義函數(shù)
                if ((n==1) || (n==2)) {
                   return 1;
                }
                else {
                   return (Fibonacci(n-1)+Fibonacci(n-2));
                }
            }
            //-->       
        </script>
        </head>
        <body>
          <script language="JavaScript">
             <!--
             var userinput=eval(prompt("請(qǐng)輸入計(jì)算第幾個(gè)Fibonacci數(shù):", ""));
             var total=Fibonacci(userinput);  //調(diào)用遞歸函數(shù)
             alert("第"+ userinput +"個(gè)Fibonacci為:"+total);
             //-->       
          </script>
        </body>
        </html>
    我發(fā)現(xiàn)在運(yùn)行參考答案的時(shí)候,n的數(shù)值太大的時(shí)候就有問(wèn)題了,瀏覽器非常卡,并且提示

    這個(gè)是否說(shuō)明我的程序比較有效率,是什么原因造成的?知道的人指點(diǎn)下

    posted on 2008-01-10 11:15 feng 閱讀(1493) 評(píng)論(4)  編輯  收藏

    Feedback

    # re: javascript求Fibonacci的問(wèn)題 2008-01-11 06:19 馬奪元

    Fibonacci,在提到他的時(shí)候一般都是在說(shuō)遞歸。
    你自己寫的里面其實(shí)已經(jīng)不能完全說(shuō)是遞歸了,已經(jīng)有點(diǎn)循環(huán)的概念了(畢竟,遞歸是可以轉(zhuǎn)換為循環(huán)),只是沒(méi)有完全轉(zhuǎn)換為循環(huán)。
    你寫的應(yīng)該是比參考答案的效率高,因?yàn)檎{(diào)用函數(shù)的開(kāi)銷是很高的(就像參考但按中的那樣)。
    但遞歸有它自己的優(yōu)點(diǎn):結(jié)構(gòu)(邏輯)清晰,可讀性強(qiáng)。缺點(diǎn)就是效率低,相差一兩個(gè)數(shù)量級(jí)是很常見(jiàn)的。
    在實(shí)際當(dāng)中,真正用遞歸的地方很少。  回復(fù)  更多評(píng)論   

    # re: javascript求Fibonacci的問(wèn)題 2008-10-14 16:49 hoho

    遞歸的方法垃圾。  回復(fù)  更多評(píng)論   

    # re: javascript求Fibonacci的問(wèn)題 2008-10-14 17:35 hoho

    這里設(shè)n取5,第一次遞歸:Fibonacci(5)=Fibonacci(4)+Fibonacci(3);
    第2次遞歸:Fibonacci(5)=Fibonacci(4)+Fibonacci(3);
    Fibonacci(4)=Fibonacci(3)+Fibonacci(2)
    =Fibonacci(3)+1 ;
    Fibonacci(3)=Fibonacci(2)+Fibonacci(1)=1+1=2;//n值為1or2,
    第3次遞歸:Fibonacci(5)=Fibonacci(4)+Fibonacci(3);
    Fibonacci(4)=Fibonacci(3)+Fibonacci(2)
    =Fibonacci(3)+1 ;
    Fibonacci(3)=Fibonacci(2)+Fibonacci(1)=1+1=2;
    Fibonacci(3)=Fibonacci(2)+Fibonacci(1)=1+1=2;
    1:f(5)
    2:f(4)+f(3)
    3:f(3)+f(2)+f(2)+f(1)
    4:f(2)+f(1)+f(2)+f(2)+f(1)

    如果n為6的話,幾乎多了一倍的分解。f(6)=f(5)+f(4);
    f(5) 為上面的。f(4)類似.
    也就是說(shuō)n+1的話,執(zhí)行時(shí)間比n幾乎多一倍。
      回復(fù)  更多評(píng)論   

    # re: javascript求Fibonacci的問(wèn)題 2008-10-14 17:43 hoho


    <html>
    <head>
    <title>ex2.html</title>
    </head>

    <body>
    <script type="text/javascript">
    var n=eval(prompt("",""));
    var i=0;
    var lo=1;
    var hi=1;
    while(i<n-2){
    hi=lo+hi;
    lo=hi-lo;
    i++;
    }
    alert(hi);
    </script>
    </body>
    </html>  回復(fù)  更多評(píng)論   



    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产福利免费观看| 久久国产精品亚洲综合 | 免费精品国自产拍在线播放 | 亚洲AV无码乱码在线观看代蜜桃| 插B内射18免费视频| 青青草97国产精品免费观看| 亚洲成av人影院| 免费的一级片网站| 在线看片免费人成视频播| 亚洲午夜在线一区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 无码乱人伦一区二区亚洲一| 久久久久久国产精品免费免费| 精品一区二区三区免费视频| 亚洲一级免费毛片| 亚洲伊人久久精品影院| 免费一本色道久久一区| a级毛片在线视频免费观看| 久久亚洲精品国产精品婷婷| 亚洲香蕉成人AV网站在线观看 | 久久精品国产精品亚洲艾草网| 永久免费看mv网站入口| 久久午夜夜伦鲁鲁片免费无码 | 日亚毛片免费乱码不卡一区| 亚洲视频在线观看免费视频| 亚洲免费在线观看| 成人性生免费视频| 最近2022中文字幕免费视频| 国产黄在线观看免费观看不卡| 亚洲AV成人噜噜无码网站| 亚洲第一极品精品无码久久| yy6080久久亚洲精品| 国产成在线观看免费视频| 最近免费中文字幕MV在线视频3| 春暖花开亚洲性无区一区二区| 亚洲明星合成图综合区在线| 亚洲国产精品无码久久SM| 亚洲日韩国产精品乱| 日本免费高清一本视频| 猫咪社区免费资源在线观看| 8x8×在线永久免费视频|