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

版权声明:071623 https://blog.csdn.net/weixin_43584220/article/details/88909504
//这种思路是用排列方法写的
//       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);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43584220/article/details/88909504
今日推荐