【威哥说】没有接触过程序的同窗,感受代码距离咱们很好遥远,但是你真正的学会了编程以后,你才知道,其实程序但是实现全部的事物。本篇文章就是波波老师针对一个学生的提问,单纯的使用循环和判断实现的杨辉三角。你们一块儿学习一下吧。编程
有学生问到杨辉三角该如何用代码实现,说来也有意思,他把规律都总结完了,就是写不出来代码,我一问是为何,小伙说不能用数组,就单纯的用循环和判断来实现,想一想以为还挺有意思,就整理了整理。 网上找了找代码,有趣的是都是用的二维数组来实现的,因此就没有具体去研究了,看看如何本身来实现。首先咱们看一下效果图: 如上图所示,这里咱们从控制台输入要显示的行数,而后来具体的进行显示。 首先,总结规律以下: 第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;code
//首先须要一个内层循环控制每行的个数,并且咱们发现每行的个数是递增的因此,初始为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();input
}基础
如上就是整个的杨辉三角的实现逻辑了,我的以为其实比网上二维数组的要好理解一些,你们阔以研究研究。