算法基础_递归_求杨辉三角第m行第n个数字

问题描述:

算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始)

解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好):

import java.util.Scanner;

/**
 *     求杨辉三角第m层第n个数字
 * @author Administrator
 *
 */
public class Demo05 {
    public static int f(int m,int n) {
        if(n==0)return 1;
        if(m==0 || m==n)return 1;
        return f(m-1,n-1)+f(m-1,n);//只需要写上规律语句即可
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        for(int i = 0;i<m+1;i++) {
            System.out.print(f(m,i)+" ");
        }
        //System.out.println(f(3,2));
    }
}

解题思路:

因为杨辉三角的规律就是 要求的那个数字 = 上一行这个位置的数字 + 其前一个数字

这样表达式就出来了,直接return就行

希望对大家有所帮助

以上

原文地址:https://www.cnblogs.com/lavender-pansy/p/10532978.html

时间: 2024-08-04 09:58:59

算法基础_递归_求杨辉三角第m行第n个数字的相关文章

一维数组求杨辉三角

问题: 编写程序,根据输入的正整数n(1<=n<=12),输出相应的杨辉三角图案,例如,当n=5时,将输出: 1  1 1                                                     1 2 1                                                   1 3 3 1                                                  1 4 6 4 1             

Java编程-输出杨辉三角前10行

public class YanghuiTriangle { public static void main(String[] args) { int triangle[][]=new int[10][];// 创建二维数组 // 遍历二维数组的第一层 for (int i = 0; i < triangle.length; i++) { triangle[i]=new int[i+1];// 初始化第二层数组的大小 // 遍历第二层数组 for(int j=0;j<=i;j++){ if(i

二维数组求杨辉三角

1 #include<stdio.h> 2 int main(){ 3 int i,j,n; 4 int a[13][13]; 5 do{ 6 printf("Enter n(1-12):"); 7 scanf("%d",&n); 8 }while(!(n>=1&&n<=12)); 9 for(i=0;i<=n;i++){ 10 a[i][0]=1; 11 a[i][i]=1; 12 for(j=1;j<=

非数组求杨辉三角

1 #include<stdio.h> 2 int main(){ 3 int i,j,n,c; 4 do{ 5 printf("Enter n(1-12):"); 6 scanf("%d",&n); 7 }while(!(n>=1&&n<=12)); 8 for(i=0;i<=n;i++){ 9 c=1; 10 for(j=1;j<=37-3*i;j++) 11 printf(" ")

杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析

说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三角形中的一种几何排列.此处引用维基百科上的一张动态图以直观说明(原文链接http://zh.wikipedia.org/wiki/杨辉三角): 从上图可看出杨辉三角的几个显著特征: 1. 每行数值左右对称,且均为正整数. 2. 行数递增时,列数亦递增. 3. 除斜边上的1外,其余数值均等于其肩部两数

HDNOIP201405杨辉三角

2016.1.27 试题描述 杨辉三角是形如如下的数字三角形: 1 1    1 1   2    1 …… 现在想求出杨辉三角第N行的N个数中,有多少个数能被给定的质数p整除. 输入 一行两个空格隔开的整数N和p 输出 输出一个整数,表示第N行能被给定的质数p整除的个数 输入示例 3 2 输出示例 1 其他说明 对于60%的数据,N≤30,p≤1000,对于80%的数据,N≤1000,p≤1000,对于100%的数据,N≤[10]^9,p≤1000 首先知道是卢卡斯定理 和 组合数取模 然后就

POJ 3187 Backward Digit Sums (杨辉三角,穷竭搜索,组合数,DFS)

http://poj.org/problem?id=3187 将一行数按杨辉三角的规则计算为一个数,已知最后那个数和三角形的高度,求最初的那行数. 杨辉三角前10行:                   1                                   1   1                               1   2   1                           1   3   3   1                       1  

杨辉三角-list实现(优化)

计算杨辉三角前6行(升级版),list实现     值如下:     [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1]] 思路:     上一个实现的思路,下一行的数字是基于上一行的数字求得而来,那么则只需要使用两     个内存空间,分别来保存这两行数字.一个保存上一行的数字,另一行则保存求得的下一     行数字.一轮循环后,新生成的下一行变成了旧行,新行清空重新计算并填充. 优化思路:     直接开辟一个足够大的内存空间,在

二项式定理与杨辉三角

(a + b)2 = a2 + 2ab + b2 (a + b)3 = a3 + 3a2b + 3ab2 + b3 (a + b)4 = a4 + 4a3b + 6a2b2 + 6ab3 + b4 (a + b)5 = a5 + 5a4b + 10a3b2 + 10a2b3 + 5ab4 + b5 (a + b)6 = a6 + 6a5b + 15a4b2 + 20a3b3 + 15a2b4 + 6ab5 + a6 … … (a + b)n = ? 在二项式 (a + b)n 中,每一单项式的次