`
shuiguaiQQ
  • 浏览: 14444 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java杨辉三角递归实现

    博客分类:
  • Java
阅读更多

转载请注明出处:http://shuiguaiqq.iteye.com/blog/2065671

网上看到的几乎都是大同小异,而本人喜欢逻辑清晰的代码,忍不住动手写了下,代码如下:

public class YangHui {
    public static void main(String[] args) {
        int n = 9;
        displayYangHui(n);
    }

    public static void displayYangHui(int n) {
        for (int i = n - 1; i >= 0; i--) {
            for (int j = 0; j < i; j++) {
                System.out.print(" ");
            }
            showRow(getRow(n - i));
        }
    }

    private static void showRow(int[] row) {
        for (int i = 0; i < row.length; i++) {
            System.out.print(row[i] + " ");
        }
        System.out.println();
    }

    private static int[] getRow(int row) {
        if (row == 1) {
            return new int[] { 1 };
        }
        if (row == 2) {
            return new int[] { 1, 1 };
        }

        int[] result = new int[row];
        for (int i = 0; i < result.length; i++) {
            if (i == 0 || i == result.length - 1) {
                result[i] = 1;
            } else {
                result[i] = getRow(row - 1)[i - 1] + getRow(row - 1)[i];
            }
        }
        return result;
    }

}

 

2
2
分享到:
评论
4 楼 wenchui 2016-03-18  
算法是有问题的,n超过11,就基本上算不出来了,层数多了,算不动了
3 楼 netkiller.github.com 2014-05-14  
都啥年代了,还杨辉三角
2 楼 shuiguaiQQ 2014-05-14  
zhang_xzhi_xjtu 写道
public class Yang4 {

    public static void main(String[] args) {
        compute(9);
    }

    public static void compute(int level) {
        for (int n = 0; n <= level; n++) {
            for (int c = 0; c <= n; c++) {
                System.out.print(compute(n, c) + "\t");
            }
            System.out.println();
        }
    }

    public static int compute(int n, int c) {
        if (c == n || c == 0)
            return 1;
        return compute(n - 1, c) + compute(n - 1, c - 1);
    }
}

好,不错
1 楼 zhang_xzhi_xjtu 2014-05-14  
public class Yang4 {

    public static void main(String[] args) {
        compute(9);
    }

    public static void compute(int level) {
        for (int n = 0; n <= level; n++) {
            for (int c = 0; c <= n; c++) {
                System.out.print(compute(n, c) + "\t");
            }
            System.out.println();
        }
    }

    public static int compute(int n, int c) {
        if (c == n || c == 0)
            return 1;
        return compute(n - 1, c) + compute(n - 1, c - 1);
    }
}

相关推荐

    java实现杨辉三角形

    Java实现杨辉三角形是一种常见的编程练习,它涉及到数组、循环和递归等基础编程概念。杨辉三角形,又称为帕斯卡三角形,是中国古代数学家杨辉提出的一种几何排列形式,它在组合数学中有着重要的地位,因为其行中的...

    基于java实现杨辉三角

    在计算机编程中,杨辉三角常用于生成二项式系数,这对于理解和实现各种算法至关重要,特别是在解决递归问题时。 **Java实现杨辉三角**主要是通过编程来生成和显示这个几何形状。以下是实现的基本步骤: 1. **初始...

    用java实现杨辉三角

    杨辉三角,又称帕斯卡三角,是一种在数学中广泛使用的二维数字模式,它展示了二项式系数的规律。在每一行中,每个数字是它上面两个数字的和,而边缘的数字始终为1。杨辉三角在组合数学、概率论、计算机科学等多个...

    java杨辉三角

    Java实现杨辉三角是一种常见的编程练习,它涉及到数组、循环和递归等基本概念。杨辉三角,又称帕斯卡三角,是数学中一个有趣的二维数列结构,它在组合数学、概率论以及计算机科学中都有广泛的应用。下面将详细阐述...

    Java编写杨辉三角代码

    Java编程实现杨辉三角是一种经典的算法问题,它与组合数学紧密相关,经常出现在计算机科学的基础教学中。杨辉三角,又称帕斯卡三角,是一个二维的数字数组,每一行的数字构成一个等差数列,且每行的两端都是1,中间...

    java 杨辉三角

    【Java 杨辉三角】是计算机编程中一个经典的数据结构问题,主要涉及到数组或列表的使用,以及递归或循环的算法实现。杨辉三角,又称帕斯卡三角,是数学上的一种二维数字序列,其每一行都是一个等差数列,形状酷似一...

    java实现杨辉三角显示

    在Java中,我们可以使用二项式定理来计算这些组合数,从而实现杨辉三角的显示。 二项式定理指出,任何幂次为n的二项式展开(a + b)^n 的每一项都是由一个组合数C(n, k)乘以a的k次方与b的(n-k)次方组成的,其中k从0...

    java编程杨辉三角

    2. **递归实现**:利用递归的思想,假设已知第`i-1`行的杨辉三角,可以求出第`i`行。每个位置`i`,`j`的值等于上一行`i-1`,`j-1`和`i-1`,`j`的位置之和。 ```java public static int[] getRow(int rowIndex) { ...

    C语言 C++ java 三种语言 杨辉三角形的实现代码

    在Java中,可以创建一个名为"PascalTriangle"的类,利用递归或迭代方法来生成和打印杨辉三角形。 在学习这三种语言的实现时,我们可以对比它们在内存管理、数据结构选择、代码结构以及效率上的差异。例如,C语言的...

    锯齿数组打印杨辉三角形

    递归方法是使用函数调用自身来计算杨辉三角的每一行的元素,而迭代方法是使用循环来计算杨辉三角的每一行的元素。这个示例代码使用了迭代方法来计算杨辉三角的每一行的元素。 这个示例代码展示了如何使用锯齿数组和...

    杨辉三角-java编写

    在Java编程中实现杨辉三角,主要涉及数组、循环和递归等编程概念。以下将详细讲解杨辉三角的原理、Java实现方式以及相关知识点。 **一、杨辉三角的基本原理** 杨辉三角是一个二维的数阵,每一行的数字是上一行相邻...

    java 杨辉三角的资源

    在Java编程中,理解并实现杨辉三角可以帮助我们更好地掌握递归、循环和数组操作等基础知识。下面将详细阐述杨辉三角的原理以及如何用Java来实现它。 杨辉三角是一个二维的数阵,每一行都是由若干个数字组成,且每个...

    输出杨辉三角java入门程序

    6. **递归与迭代**:杨辉三角的生成既可以采用递归方式,也可以通过迭代实现。此处的Java程序很可能使用了迭代,因为递归在处理大量行时可能导致性能问题。 7. **算法优化**:对于20行以下的输出,简单的算法即可...

    Java实现杨辉三角

    Java实现杨辉三角是一种利用编程语言来展示数学理论的方式,杨辉三角,又称帕斯卡三角,是一个在数学中广泛使用的二维数组结构。这个三角形的每一行都是一个数列,其中每个数字是上一行相邻两个数字之和,且边界数字...

    JAVA编写的杨辉三角(两种不同排列方式)

    在编程中实现杨辉三角,可以帮助我们更好地理解和运用递归、数组以及循环等基本概念。 首先,让我们来看看两种不同的排列方式: 1. **线性数组表示法**: 在`yanhuishanjiao.java`中,可能采用了这种表示方法。...

    推荐了多个教程讲解java实现杨辉三角

    Java 实现杨辉三角教程资源集锦 杨辉三角是计算机科学中一个非常经典的编程题目,对于初学者来说尤为重要。杨辉三角的生成规则是:每行的第一个和最后一个元素都为1,其他元素是它上一行的两个元素之和。今天,我们...

    杨辉三角形.zip

    参赛者可能需要读取这些文件,从中获取行数n,然后利用杨辉三角形的算法生成对应的输出,例如输出到标准输出或写入输出文件(如杨辉三角形.c可能是实现相关算法的C语言源代码)。 总的来说,杨辉三角形不仅是数学的...

    yanghuisanjiao.rar_杨辉三角

    在编程领域,实现杨辉三角的算法通常涉及递归或动态规划。这里我们主要关注Java实现的杨辉三角代码。通过分析`yanghuisanjiao.txt`文件,我们可以了解到如何用Java编写一个程序来生成杨辉三角的任意层数。 首先,...

    java打印可对齐的任意层数的杨辉三角形

    **递归实现:** 另一种方法是使用递归。递归函数接收两个参数:当前层的索引和上一层的数组。在函数内部,如果当前层是第一层,返回[1];否则,根据上一层的数组计算当前层的每个数字,并调用递归函数处理下一层。 ...

Global site tag (gtag.js) - Google Analytics