经典递归问题--杨辉三角YangHui_Triangle--Java实现

本文提供了两种不同的方法来生成杨辉三角。一种使用组合数学的方法,另一种则利用递归思想,通过当前数等于前一排对应位置数加上其前一位数的方式进行计算。这两种方法都清晰地展示了如何打印出指定层数的杨辉三角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//这种思路是用组合方法写的
//       c00
//     c10 c11
//    c20 c21 c22
//   c30 c31 c32 c33
//  c40 c41 c42 c43 c44
// c50 c51 c52 c53 c54 c55
//c60 c61 c62 c63 c64 c65 c66  
package cn.LanQiaoBeiAlgorithm.Ravanla;

public class YangHui_Triangle1 {
	public static void main(String[] args) {
		int level = 4;
		for(int i = 0; i <= level; i++) {
//			System.out.print((level - i) * " ");
			f(i);
			System.out.println();
		}
	}
	//杨辉三角的第m层的第n个元素
	private static int f(int m) {
		for(int i = 0; i <= m; i++) {
			System.out.print(f1(m, i) + " ");
		}
		return 0;
	}
	//组合方法
	private static int f1(int m, int n) {
		if(m < n) return 0;
		if(n == 0) return 1;
		if(m == n) return 1;
		return f1(m - 1, n - 1) + f1(m - 1, n);
	}
}
//这种是用 (当前数)是(前一排对应位置数)加(前一排对应位置数)的前一位数的递归思想写的
package cn.LanQiaoBeiAlgorithm.Ravanla;

public class YangHui_Triangle2 {
	public static void main(String[] args) {
		int level = 4;
		for(int i = 0; i <= level; i++) {
			f(i);
		}
	}

	private static void f(int level) {
		for(int i = 0; i <= level; i++) {
			System.out.print(f1(level, i) + " ");
		}
		System.out.println();
	}

	private static int f1(int n, int m) {
		if(n == 0 || m == n || m == 0) return 1;
		return f1(n - 1, m) + f1(n - 1, m - 1);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值