今天舍友在看杨辉三角,我看了下说挺简单,自己试了试,也花了好久才弄出来,纯属自己想的算法,比较烂,下面记录一下,留着以后看自己当初写的多么烂,哈哈
效果如下:
代码如下:
1 package com.xujingyang.test; 2 3 public class yanghui { 4 public static void main(String[] args) { 5 6 yanghui(10); 7 } 8 9 public static void yanghui(int line) { 10 11 //初始第一个数字是1 12 int[] nums = new int[] { 1 }; 13 14 for (int i = 1; i <= line; i++) {//每一行的数字跟行号相同,循环 15 if (i == 1) { 16 //如果是第一行就只打印一个1 17 System.out.println(1); 18 } else { 19 20 //初始化一个数组记录求出的下一行的数字,并且数字个数跟行数相同 21 int[] nums2 = new int[i]; 22 23 //遍历求每一个对应的数字 24 for (int j = 0; j < i; j++) { 25 if (j == 0 || j == (i - 1)) { 26 //如果是第一个或者是最后一个数字,就直接拿上一行的数字的第一个或最后一个加0 27 nums2[j] = nums[i-2] + 0; 28 } else { 29 //从第二个数字开始就是上一行的对应的第j-1位数字和第j位数字相加 30 nums2[j] = nums[j - 1] + nums[j]; 31 } 32 } 33 34 //循环打印求出的对应行的数字 35 for (int j = 0; j < nums2.length; j++) { 36 System.out.print(nums2[j] + " "); 37 } 38 System.out.println(); 39 40 //最后将求出的这一行的数组赋值给上一行 41 nums = nums2; 42 } 43 } 44 45 } 46 }