利用C#迭代器的一个杨辉三角示例
身边有个朋友在跟着廖雪峰的教程学习python,途中遇到了“在Python中使用迭代器打印杨辉三角”的问题,我在帮忙解决的同时顺手写了个简单的C#版本以供补充。
internal class Program
{
/// <summary>
/// 打印杨辉三角
/// </summary>
/// <param name="count"></param>
/// <returns></returns>
private static IEnumerable<List<int>> YanghuiSanjiao(int count)
{
var previewList = new List<int>();
List<int> currentList=new List<int>();
var n = 1;
while (n <= count)
if (n == 1 || n == 2)
{
n = n + 1;
currentList.Add(1);
previewList = currentList;
yield return currentList;
}
else
{
currentList = new List<int> {1};
foreach (var item in Enumerable.Range(1, n - 2))
currentList.Add(previewList[item - 1] + previewList[item]);
currentList.Add(1);
previewList = currentList;
n = n + 1;
yield return currentList;
}
}
private static void Main(string[] args)
{
foreach (var item in YanghuiSanjiao(20))
{
item.ForEach(c =>
{
Console.Write(c+" ");
});
Console.WriteLine();
}
Console.WriteLine("Stop printing");
}
}
今早又听到Java9的正式版会有JShell的支持,而不久前推出的C#7中也有了元组的概念,果然不得不概叹现在编程语言的发展已经越来越往函数式编程靠拢了。早几个月之前,我在一篇微信公众号文章上看到了老赵翻译的Anders10年的演讲文章,主题也是关于编程语言的发展趋势和发展方向,这里也顺便贴个链接,作为备忘吧。
利用C#迭代器的一个杨辉三角示例的更多相关文章
- 用python在屏幕上输出一个杨辉三角
在屏幕上输出一个杨辉三角,代码如下 def yanghui(): L = [1] while True: yield L L.append(0) L = [L[i - 1] + L[i] for i ...
- 用Python输出一个杨辉三角的例子
用Python输出一个杨辉三角的例子 这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维 ...
- 2017.12.10 Java写一个杨辉三角(二维数组的应用)
杨辉三角的定律 第n行m列元素通项公式为: C(n-1,m-1)=(n-1)!/[(m-1)!(n-m)!] 需要用到创建二维数组 package com.glut.demo; /** * 杨辉三角 ...
- 利用python打印杨辉三角
用python打印杨辉三角 介绍 杨辉三角,是初高中时候的一个数列,其核心思想就是说生成一个数列,该数列中的每一个元素,都是之前一个数列中,同样位置的元素和前一个元素的和. 正好在python中,也就 ...
- HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)
Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次 ...
- hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- hdoj 2032 杨辉三角
杨辉三角 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU_2032——杨辉三角
Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 ...
- <hdu-2032>杨辉三角
这是杭电hdu上杨辉三角的链接:http://acm.hdu.edu.cn/showproblem.php?pid=2032 Problem Description: 还记得中学时候学过的杨辉三角吗 ...
随机推荐
- Linux下通过brctl配置网桥
什么是网桥 网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备. 简单的理解就是交换机. Linux下配置网桥主要用 brct ...
- How to Disable/Enable IP forwarding in Linux
This article describes how to Disable or Enable an IP forwarding in Linux. Current IP forwarding sta ...
- wcf 使用sqlMembership证书认证
.接口 namespace Aretch.WcfService.Services.Interface { [ServiceContract] public interface ICalculator ...
- Max Chunks To Make Sorted II LT768
This question is the same as "Max Chunks to Make Sorted" except the integers of the given ...
- Oracle12c的卸载
之前电脑装了Oracle12c 现在希望删除重新安装: 参照教程: http://jingyan.baidu.com/article/642c9d34e1cbdd644a46f7de.html E:\ ...
- 824. Goat Latin
class Solution { public: string toGoatLatin(string S) { S.push_back(' '); //add a space that the loo ...
- 2018.11.06 bzoj1093: [ZJOI2007]最大半连通子图(缩点+拓扑排序)
传送门 先将原图缩点,缩掉之后的点权就是连通块大小. 然后用拓扑排序统计最长链数就行了. 自己yyyyyy了一下一个好一点的统计方法. 把所有缩了之后的点都连向一个虚点. 然后再跑拓扑,这样最后虚点的 ...
- jquery选择树:CheckTree 插件
在做权限等提交的时候,需要用到选择树.比较了很多插件如:easyUI 树,ztree等等.本来决定自己写,但是到最后还是发现了checkTree这个插件.省了很多事情. 但是在引用过程中还是出现了一些 ...
- 证明2x2正交矩阵专置后还是正交矩阵
[ x1 x2 y1 y2] x1^2+y1^2=1 x2^2 + y2^2=1 x1*x2 + y1*y2=0 如果专置后还是 x1^2 + x2^2=1 y1^2 +y2^2=1 x1* ...
- CButton控件
1. CButton等控件一般有两种方式创建,一是在资源视图中添加,一是在代码中使用成员函数Create()进行动态创建.如果是第一种那么添加Button变量同样在资源视图中实现,右击Button控件 ...