没有接触过程序的同学,感觉代码距离我们很好遥远,可是你真正的学会了编程之后,你才知道,其实程序可是实现所有的事物。本篇文章就是波波老师针对一个学生的提问,单纯的使用循环和判断实现的杨辉三角。大家一起学习一下吧。
有学生问到杨辉三角该如何用代码实现,说来也有意思,他把规律都总结完了,就是写不出来代码,我一问是为什么,小伙说不能用数组,就单纯的用循环和判断来实现,想想觉得还挺有意思,就整理了整理。
网上找了找代码,有趣的是都是用的二维数组来实现的,所以就没有具体去研究了,看看如何自己来实现。首先我们看一下效果图:
如上图所示,这里我们从控制台输入要显示的行数,然后来具体的进行显示。
首先,总结规律如下:
第n行的 个数为1,第二个数为1x(n-1),第三个数为1x(n-1)x(n-2)/2,第四个数为1x(n-1)x(n-2)/2x(n-3)/3…依次类推。
那么找到规律了,就很好解决了,具体如何用代码来实现?
首先看到这么一个图形,首先 反应嵌套循环是跑不掉的,如果没有 时间对嵌套
循环产生想法,那么证明你三角形还是画少了。。。;
首先我们通过Scannr获取一个键盘输入的数:
Scannrinput=nwScannr(Systm.in);
intn=input.nxtInt();
那么首先外层循环控制行数:
for(inti=1;i=n;i++){
//由上面的布局来看,前面是要输出一个倒三角的空格形状的,那么此处我们用空格给代替
//由于倒三角是上面多下面少,呈递减趋势,所以我们初始位置为n,判断条件为j=i,趋势为递减,就能得到一个递减的趋势了。
for(intj=n;j=i;j--){
//这里输出空格
Systm.out.print("");
}
//由上面的总结我们看一下
个数:a1=1
第二个数:a2=a1x(n-1)
第三个数:a3=a2x(n-2)/2
第四个数:a4=a3x(n-3)/3
……
总结出来规律就是每行后一个数是前一个数乘以(n-(第几个数-1))/(第几个数-1);
所以每轮需要一个数来记录前一个数的值,这里我们定义一个sum,初始值等于1
intsum=1;
//首先需要一个内层循环控制每行的个数,而且我们发现每行的个数是递增的所以,初始为1,小于等于i,就能达成递增的趋势
for(intj=1;j=i;j++){
//上图可以看出很明显每行 个都是1,那么我们就判断如果为1直接输出
if(j==1){
Systm.out.print(1+"");
}ls{
//后边就是直接通过基础的编码来实现咱们发现的逻辑了
sum*=(i-(j-1));
sum/=(j-1);
Systm.out.print(sum+"");
}
}
Systm.out.println();
}
如上就是整个的杨辉三角的实现逻辑了,个人觉得其实比网上二维数组的要好理解一些,大家阔以研究研究。
温馨提醒
如果你已经厌倦了迷茫却不知所从的日子如果你是一位想改变生活的有志青年如果你想让威哥帮助你,请在专家白癜风专业治白癜风医院