递归到迭代Pascal的三角形

我想知道如何将递归函数/类转换为迭代函数/类。 我已经制作了一个递归的Pascal三角形,现在需要将它与迭代进行比较。

public class RecursivePascal extends ErrorPascal implements Pascal { private int n; RecursivePascal(int n) throws Exception { super(n); this.n = n; } public void printPascal() { printPascal(n, false); } public void printPascal(boolean upsideDown) { printPascal(n, upsideDown); } private void printPascal(int n, boolean upsideDown) { if (n == 0) { return; } if (!upsideDown) { printPascal(n - 1, upsideDown); } for (int i = 0; i < n; i++) { System.out.print(binom(n - 1, i) + (n == i + 1 ? "\n" : " ")); } if (upsideDown) { printPascal(n - 1, upsideDown); } } public int binom(int n, int k) { if (k == 0 || n == k) { return 1; } return binom(n - 1, k - 1) + binom(n - 1, k); } } 

为了使其迭代,我需要改变什么? 我仍然不确定这是如何工作的。 提前致谢!

将以下两个函数插入到pascal类中。 我测试了它,它的工作原理。 Prateek Darmwal发布的那个链接几乎是一回事。

  public void nonRecursivePrint() { nonRecursivePrint(n, true); } public void nonRecursivePrint(int n, boolean upsideDown) { if (!upsideDown) { for (int j=0; j<(n+1); j++) { for (int i=0; i<(j); i++) { System.out.print(binom(j - 1, i) + (j == i + 1 ? "\n" : " ")); } } } else { for (int j=n; j>0; j--) { for (int i=0; i<(j); i++) { System.out.print(binom(j - 1, i) + (j == i + 1 ? "\n" : " ")); } } } } 

通过此链接,您将找到详细解释的答案http://www.geeksforgeeks.org/pascal-triangle/

这是递归pascal三角形的代码,

 import java.util.Scanner; public class PascalsTriangleRecursion { public static void printPascal(int num) { for(int a = 0; a < num; a++) { for(int b = 0; b <= a; b++) { System.out.print(pascalTriangle(a, b) + " "); } System.out.println(); } } public static int pascalTriangle(int a, int b) { if(b == 0) { return 1; } else if(b == a) { return 1; } else { return pascalTriangle(a - 1, b - 1) + pascalTriangle(a - 1, b); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Please enter number of rows : "); int number = sc.nextInt(); printPascal(number); sc.close(); } } 

有关pascal三角形的更多信息,请参阅此资源。