杨辉三角是计算二项式乘方展开式的系数时必不可少的工具、是由数字排列而成的三角形数表。

资料:杨辉三角第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。

杨辉三角另外一个重要的特性就是每一行首尾两个数字都是1、中间的数字等于上一行相邻两个数字的和、即排列组合中通常所运用的:

C(m,n) = C(m-1,n-1)+C(m-1,n)

根据以上性质、可以利用函数很轻松地将杨辉三角运算出来、函数接受一个参数、即希望得到杨辉三角的行数、代码如下:

function Pascal(n){   //杨辉三角,N为行数
//
}

在这个函数中用两个for循环进行嵌套、外层循环数为行数、内层循环为每行内的每一项、代码如下:

for( var i = 0 ; i < n ; i++ ){   //一共N行
for ( var j = 0 ; j <= i ; j++ ) { //每行数字的个数即为行号、例如第1行1个数、第2行2个数 }
document.write("<br/>");
}

而在每行中每一个数字均为组合数C(m,n)、其中m为行号(从0算起)、n为在该行中的序号(从0算起)、即:

document.write(Combination(i,j)+"&nbsp;&nbsp;");   //引号里面的内容是两个html空格(&nbsp;&nbsp;)字符

其中Combination(i,j)为计算组合数的函数、这个函数采用组合数的特性C(m,n) = C(m-1,n-1)+C(m-1,n)、对于这样的特性、最有效的办法就是递归:

function Combination(m,n){
if(n == 0) return 1; //每行第一个数为1
else if(m == n) return 1; //最后一个数为1
//其余都是相加而来
else return Combination(m-1,n-1)+Combination(m-1,n);
}

完整代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>杨辉三角</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function Combination(m,n){
if(n == 0) return 1; //每行第一个数为1
else if(m == n) return 1; //最后一个数为1
//其余都是相加而来
else return Combination(m-1,n-1)+Combination(m-1,n);
}
function Pascal(n){ //杨辉三角,N为行数
for( var i = 0 ; i < n ; i++ ){ //一共N行
for ( var j = 0 ; j <= i ; j++ ) { //每行数字的个数即为行号、例如第1行1个数、第2行2个数
document.write(Combination(i,j)+" ");
}
document.write("<br/>");
}
}
</script>
</head>
<body>
<!-- 直接传入希望得到的杨辉三角的行数 -->
<input value="杨辉三角" type="button" onclick="Pascal(10);" />
</body>
</html>

此文章转自CSDN胡汉三的博客;

原文链接:http://blog.csdn.net/hzw2312/article/details/6592500#comments

最新文章

  1. maven的eclise配置
  2. HTA全解析:给VBS和JS一个强大的交互界面
  3. svn1.8 server client eclipse 插件 配置 完全教程
  4. dom4j读写XML文件
  5. KeepAlive详解
  6. wpf中数据绑定(Datacontext)的应用
  7. Flask -- 内容管理系统
  8. 6.2 PowerPC处理器如何处理MSI中断请求
  9. Nginx 部署多个 web 项目(虚拟主机)
  10. java操作数据库:增删改查
  11. jQuery图片无缝轮播
  12. java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bjsxt.mapper.PeopleMapper
  13. MII接口介绍(转)
  14. 大数据入门第十七天——storm上游数据源 之kafka详解(二)常用命令
  15. 数据库之Mysql高级
  16. ssh和scp详解
  17. getParameterMap的使用
  18. hibernate,mybatis,beetlsql 全面比較
  19. B1013 数素数(20分)
  20. NSFileHandle类

热门文章

  1. 南阳ACM 题目8:一种排序 Java版
  2. List&lt;Hashtable&gt;排序
  3. [USACO11FEB] Cow Line
  4. HNOI 2016 地图
  5. [洛谷3457][POI2007]POW-The Flood
  6. Jmeter-分布式
  7. UOJ#31 【UR #2】猪猪侠再战括号序列
  8. 【SPOJ】2319 BIGSEQ - Sequence
  9. cocos2dx中启用lua脚本
  10. 使用.net core abp framework