c++写杨辉三角
来源:互联网 发布:福州广电网络电视电话 编辑:程序博客网 时间:2024/06/14 18:42
先说一下为什么我要写这个比较简单的程序吧。
因为自己是刚刚转入了c++语言的学习,而且自己习惯了,学了一点有用的东西之后,有博客来记录。最重要的一点是,自己现在也开始弄linux系统,有很多的东西都是非常的痛苦和陌生,起初我的两个递归和递推版本的杨辉三角都是在ubuntu的系统上面写的,用vim来编写,可是难度真的不是一般的大····,首先就是自己不熟悉vim其次,在ubuntu上面运行c++程序也是用命令行来操作的,非常的不方便,而且在ubuntu上面打中文也不是很那么的智能的。哎,说多了都是泪啊。
——————————————————————————————————————————————————————————————————————————————————
正题。
杨辉三角其实是程序设计基础的必要的程序,之前都是看了半懂半不懂得感觉,所以今天我就自己动手来干。
其实很简单就利用了一个公式:c(m,n)=c(m-1,n-1)+c(m,n-1);这个是自由组合的公式,自己百度哈哈。
下面就是代码展示。
(一)这个是递推版本的。
#include <iostream>#include <vector>//很明显,我这里用的是容器而不是二维的数组,因为我觉得如果用二维的数组的话会有很大的浪费。using namespace std;void chushihua(int n,vector<int> (&c)[100]);//这里引用类型利用真的是大费周章了啊,原本我是没有那个100的突然发现,这个是引用来的,//如果没有这个100的话,那么这引用和它所引用的类型的大小岂不是不一样的,多么痛的领悟啊。int main(){int n;cout<<"please input a number n"<<endl;cin>>n;vector<int> s[100];chushihua(n,s);return 0;}void chushihua(int n,vector<int> (&c)[100]){for(int i=0;i<n;i++){for(int j=0;j<i+1;j++){if((j==0)||(j==i))c[i].push_back(1);else{c[i].push_back(c[i-1][j]+c[i-1][j-1]);}cout<<c[i][j]<<" ";}cout<<endl;}}(二)递归版本
#include <iostream>#include <vector>using namespace std;int c(int n,int m);int main(){vector<int> s[100];int n;cout<<"please input a number n that mean how many lines that traiangle will be"<<endl;cin>>n;for(int i=0;i<n;i++){for(int j=0;j<i+1;j++){s[i].push_back(c(i,j));}}for(int i=0;i<n;i++){ for(int j=0;j<i+1;j++)cout<<s[i][j]<<" ";cout<<endl; } }int c(int a,int b){if(b==0)return 1;else if (b==a)return 1;else {return c(a-1,b-1)+c(a-1,b);}}
其实这个版本的都是差不多的。不过运用的思想不是很一样。既然这样就说一下自己对于递归和递推的理解吧。
递归:
1,针对于一个函数自己调用自己的函数类型,这个往往是非常简洁的。当递归来用解决那种数列类型的时候,往往就能写成递推的行,就是根据第一个然后推出以下后面的n项来的,很强
递推:
1,上面所说。一般用于数列,而且一定得有储存。
0 0
- C写杨辉三角
- 用C语言写杨辉三角
- c语言--双三角
- 倒三角,初学C
- c:杨辉三角
- [c++]杨辉三角
- 【c】杨辉三角
- C|倒三角(trangle)
- 数据结构C#-杨辉三角
- c++*号打印上三角
- 杨辉三角(C#)
- C语言打印出杨辉三角
- C语言:打印三角数列
- c语言 杨辉三角
- 杨辉三角 c语言
- c语言 杨辉三角
- 杨辉三角(c语言)
- C:打印杨辉三角
- 大数据系列修炼-Scala课程49
- 九个Console命令,让 JS 调试更简单
- HTTP协议
- xml解析--通讯管理系统(图形界面版)
- 初学者读论文
- c++写杨辉三角
- android 安装 SDK的时候报错!!! 他说拒绝访问https://dl-ssl.google.com??
- iScroll中那些需要理解的细节部分
- MemoryHook 内存统计
- (五) 驱动注册
- web
- [Extjs6]浅谈对admin-dashboard模板左侧菜单树的修改
- 动态规划算法
- 圆形头像