楊輝三角的算法設計以及優化



遞歸思路:算法清晰,思路簡潔,代碼量少,但執行速度緩慢。

    function c(x,y){
        if((y==1)||(y==x+1))   return 1;
        return c(x-1,y-1)+c(x-1,y);
    }
    for(var i=0;i<=n;i++){
        for(var j=1;j<i+2;j++){
            print(c(i,j));
        }
        print("<br />");
    }


優化設計:
    var a1=[1,1];
    var a2=[1,1];
    for(var i=2;i<=n;i++){
        a2[0] =1;
        for(var j=1;j<i-1;j++) {
            a2[j] = a1[j - 1] + a1[j];
        }
        a2[j]=1;
        for(var k=0;k<=j;k++){
            a1[k]=a2[k];
        }
    }


設計輸出數表

<script>
  function print(v){
      if(typeof v=="number"){
          var w=40;
          if(n>30)w=(n-30+40);
          var s = '<span style="padding:4px 2px;display: inline-block;text-align: center;width: '+w+'px;">'+v+'</span>';
          document.write(s);
      }
      else
      {
          document.write(v);
      }
  }
  var n=prompt("請輸入冪數:",9);
  n=n-0;
  var t1=new Date();
  var a1=[1,1],a2=[1,1];
  print('<div style="text-align: center;">');
  print(1);
  print("<br />");
    for (var i=2;i<=n;i++){
      print(1);
      for(var j=1;j<i-1;j++){
          a2[j]=a1[j-1]+a1[j];
          print(a2[j]);
      }
      a2[j]=1;
        for(var k=0;k<=j;k++){
            a1[k]=a2[k];
    }
    print(1);
    print("<br />");
  }
  print("</div>");
    var t2=new Date();
print("<p style='text-align: center;'>耗時爲(毫秒):"+(t2-t1)+ "</p>");


</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章