易码技术论坛

 找回密码
 加入易码
搜索
查看: 261047|回复: 6

[归档] [数学]递归定义杨辉三角

[复制链接]
发表于 2006-7-6 15:56:00 | 显示全部楼层
楼主能说说m, n的意义么
发表于 2006-7-6 16:53:00 | 显示全部楼层
n表示第几行,m表示第几列(都从0开始)

cnm(n,m)也就是所谓的组合数:从n个不同的球中选m个球的方法总数。

[此贴子已经被作者于2006-7-6 18:23:39编辑过]

发表于 2006-7-6 17:36:00 | 显示全部楼层
那个是求组合?怎么没看出来,求组合用得着递归么?
发表于 2006-7-6 17:52:00 | 显示全部楼层
组合数,,并不是求排列(楼上意思是把各种排列求出来把?),也就是杨辉三角中的那些数,有很多种求法,当然可以用递归(这种方法是比较好的一种)
[此贴子已经被作者于2006-7-6 18:24:28编辑过]

发表于 2006-7-6 18:17:00 | 显示全部楼层
从n个不同的球中选m个球的方法总数


这个不是组合数么?
发表于 2006-7-6 18:23:00 | 显示全部楼层
汗,我写反了,晕
 楼主| 发表于 2006-7-6 11:47:19 | 显示全部楼层 |阅读模式
Python
n表示第几行,m表示第几列(都从0开始)

cnm(n,m)也就是所谓的组合数:从n个不同的球中选m个球的方法总数。

根据高中学过的组合函数的公式。。即可得出组合函数的递归定义

  1. #根据杨辉三角特性定义组合函数
  2. def cnm(n,m):
  3.     if n==m or m==0 or n==0:
  4.         return 1
  5.     else:return cnm(n-1,m-1)+cnm(n-1,m)
  6. #打印杨辉三角
  7. for i in range(0,10):
  8.     for j in range(0,i+1):
  9.         print '%-3d'%cnm(i,j),
  10.     print;
复制代码


输出结果
1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5   10  10  5   1
1   6   15  20  15  6   1
1   7   21  35  35  21  7   1
1   8   28  56  70  56  28  8   1
1   9   36  84  126 126 84  36  9   1


[此贴子已经被作者于2006-7-6 19:17:39编辑过]

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-25 12:11 , Processed in 0.010440 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表