博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序员抢了数学家的饭碗
阅读量:6072 次
发布时间:2019-06-20

本文共 1344 字,大约阅读时间需要 4 分钟。

hot3.png

【威哥说】没有接触过程序的同学,感觉代码距离我们很好遥远,可是你真正的学会了编程之后,你才知道,其实程序可是实现所有的事物。本篇文章就是波波老师针对一个学生的提问,单纯的使用循环和判断实现的杨辉三角。大家一起学习一下吧。

有学生问到杨辉三角该如何用代码实现,说来也有意思,他把规律都总结完了,就是写不出来代码,我一问是为什么,小伙说不能用数组,就单纯的用循环和判断来实现,想想觉得还挺有意思,就整理了整理。网上找了找代码,有趣的是都是用的二维数组来实现的,所以就没有具体去研究了,看看如何自己来实现。首先我们看一下效果图:如上图所示,这里我们从控制台输入要显示的行数,然后来具体的进行显示。首先,总结规律如下:第n行的第一个数为1,第二个数为1x(n-1),第三个数为1x(n-1)x(n-2)/2,第四个数为1x(n-1)x(n-2)/2x(n-3)/3…依次类推。那么找到规律了,就很好解决了,具体如何用代码来实现?首先看到这么一个图形,首先第一反应嵌套循环是跑不掉的,如果没有第一时间对嵌套循环产生想法,那么证明你三角形还是画少了。。。;首先我们通过Scanner获取一个键盘输入的数:

Scanner input = new Scanner(System.in);

int n = input.nextInt();

那么首先外层循环控制行数:

for( int i = 1 ; i <=n ; i++ ){ //由上面的布局来看,前面是要输出一个倒三角的空格形状的,那么此处我们用空格给代替 //由于倒三角是上面多下面少,呈递减趋势,所以我们初始位置为n,判断条件为j>=i,趋势为递减,就能得到一个递减的趋势了。 for (int j = n; j >=i; j--) { //这里输出空格 System.out.print(" "); }

//由上面的总结我们看一下 第一个数: a1 = 1 第二个数: a2 = a1x(n-1)

第三个数: a3 = a2x(n-2)/2 第四个数: a4 = a3x(n-3)/3 … …

总结出来规律就是每行后一个数是前一个数乘以(n-(第几个数-1))/(第几个数-1);

所以每轮需要一个数来记录前一个数的值,这里我们定义一个sum,初始值等于1 int sum = 1;

//首先需要一个内层循环控制每行的个数,而且我们发现每行的个数是递增的所以,初始为1,小于等于i,就能达成递增的趋势

for (int j = 1; j <= i; j++) { //上图可以看出很明显每行第一个都是1,那么我们就判断如果为1直接输出 if (j == 1) { System.out.print(1+" "); }else{ //后边就是直接通过基础的编码来实现咱们发现的逻辑了 sum*=(i-(j-1)); sum/=(j-1); System.out.print(sum+" "); } } System.out.println();

}

如上就是整个的杨辉三角的实现逻辑了,个人觉得其实比网上二维数组的要好理解一些,大家阔以研究研究。

转载于:https://my.oschina.net/moliying/blog/757452

你可能感兴趣的文章
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>