帕斯卡三角打印问题(有遗留问题)

利用递归打印帕斯卡三角

  • 自己思路也有点乱了,核心思想是递归的往上去实现上一层的数组。一直往上到第二层就可以算第三层的了,再依次往下去求。每一层算完都把这一层的结果保存到map里面。之所以用map也是没办法,因为他会重复把已经算过的也给加进去,感觉是两次就可以了但是怎么也加不完。只好用map。数组的长度作为键。就不会重复加相同长度的数组了,加了也是覆盖了。。没办法,留作以后再来看。!!!
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class PascalTriangle {
    int size;
    Map<Integer, int[]> hashMap;
    
    public PascalTriangle(int size){
        this.size=size;
        hashMap=new HashMap<Integer,int[]>();
        int a[]={1};
        hashMap.put(a.length, a);
        
    }
    
    public int[] triangle(int size){
        
        int x=size;
        int[] a=new int[x];
        if(x==2){
            a[0]=1;
            a[1]=1;
        }else{
            a[0]=1;
            a[x-1]=1;
            for(int i=1;i<a.length-1;i++)
                a[i]=triangle(x-1)[i-1]+triangle(x-1)[i];
        }
        hashMap.put(a.length,a);
        return a;
    }
    
    public void print(Map<Integer, int[]> hashMap){
        Set<Map.Entry<Integer, int[]>> aset=hashMap.entrySet();
        Iterator<Entry<Integer, int[]>> it=aset.iterator();
        while(it.hasNext()){
            Map.Entry<Integer,int[]> entry=it.next();
            int a[]=entry.getValue();
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+"\t");
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        PascalTriangle p=new PascalTriangle(9);
        p.triangle(9);
        p.print(p.hashMap);
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容