杨辉三角

来源:互联网 发布:域名限制和域名纠纷 编辑:程序博客网 时间:2024/06/06 18:02

题目:打印杨辉三角
杨辉三角
分析:
1.每一行数字的个数等于行数(行数<=列数)
2.每行数字开头和结尾数字为1
3.行与列之间的关系,每个数等于它上行同位置的数和前一个数之和


方法一:用二位数组解决

package com.math.forth;/*** * 打印杨辉三角 分析:  * 1.每一行数字的个数等于行数(行数<=列数)  * 2.每行数字开头和结尾数字为1 * 3.行与列之间的关系,每个数等于它上行同位置的数和前一个数之和 *  * @author wql * */public class Math18 {    public static void main(String[] args) {        int[][] f = new int[10][10];        f[0][0] = 1; // 第一行的值        for (int i = 1; i < 10; i++) {            for (int j = 1; j <= i; j++) {  //每一行数字的个数等于行数(行数<=列数)                f[i][j] = f[i - 1][j - 1] + f[i - 1][j]; // 每个数等于它上方两数之和                System.out.print(f[i][j] + " ");            }            System.out.println();        }    }}

运行图


方法二:用递归调用求出具体位置的数值

package com.math.forth;/*** * 杨辉三角 *  * @author wql * */public class Math19 {    public static void main(String[] args) {        // 打印出杨辉三角行        for (int i = 1; i <= 10; i++) {            for (int j = 1; j <= 10; j++) {                if (method(i, j) != 0) {                    System.out.print(method(i, j) + " ");                }            }            System.out.println();        }        // 求出具体位置的数值        System.out.println("------------求出具体位置的数值--------------");        System.out.println(method(5, 3));    }    public static int method(int i, int j) {        if (i == 1 && j == 1) {            return 1;        } else if (j < 1 || j > i) { // 当i和j值越界时            return 0;        } else {            return method(i - 1, j) + method(i - 1, j - 1); // 每个数等于它上方两数之和        }    }}

运行图

原创粉丝点击