Day5-知识总结

打印菱形

菱形

菱形规律–1,3,5,7,9,7,5,3,1(在打印九行时的规律)
即2i+1(第一个元素下标为0)
一个上三角形+倒三角形
找准规律,填充空格

一次性打印

int n=9;
for(int i=0;i<n;i++){ //表示行
	int mid=n/2; //找到中间行
	for(int j=0;j<n;j++){
		if(i<=mid){
			int start=mid-i;//寻找当前行行*开始的位置 
			int num=2i+1;//计算当前行*要打多少个
			System.out.print(j<start||j>=(start+num)?" ":"*");
//在start之间或者start+num之后均打空格,在start~(start+num)中的打*
		} 
		//倒三角
		else{
			int start=i-mid; 
			int num=2*(2*mid-i)+1;  //2*mid-i == n-1-i
			//2*mind-i可以得到0-mid-1的数则类似上面  
			System.out.print(j<start||j>=(start+num)?" ":"*");
		}
	}
	System.out.println();
}

分成两部分打印

int n=9;
int mid=n/2
//打印上三角
for(int i=0;i<=mid;i++){ //表示行
	//打印空格
	for(int j=1;j<=mid-i;j++){
		System.out.print(" ");
	}
	//打印*号
	for(int j=1;j<=2i+1;j++){
		System.out.print("*");
	}
	System.out.println();
}
//打印下三角
for(int i=mid+1;i<n;i++){ //表示行
	//打印空格
	for(int j=1;j<=i-mid;j++){
		System.out.print(" ");
	}
	//打印*号
	for(int j=1;j<=2*(n-1-i)+1;j++){
		System.out.print("*");
	}
	System.out.println();
}

杨辉三角

杨辉三角

找规律,填充空格
因为下一行的数据需要借助于上一行,因此将每一行的数据放入一个数组便于下一行使用

int num=5
//打印杨辉三角
int[] pre={};
for(int i=1;i<=num;i++){
	//打印当前行空格
	for(int j=1;j<=num-i;j++){
		System.out.print(" ");
	}
	//打印当前行值
	int nowN=pascalPrint(pre,i);
	pre=nowN;
	for(int j=0;j<nowN.length;j++){
		System.out.print(now[j]+" ");
	}
	System.out.println();
}
//计算杨辉三角的每一行数据
public static int[] pascalPrint(int pre[],int n){
	if(n==1)
		return new int[]{1};
	else if(n==2)
		return new int[]{1,1};
	else{
		int []newN=new int[pre.length+1];
		newN[0]=1;
		newN[newN.length-1]=1;
		for(int i=0;i<pre.length;i++){
			newN[i+1]=pre[i]+pre[i+1];
		}
	}
}

两个数之间的最大公约数与最小公倍数

辗转相除法–最大公约数

用较小数除较大数,再用出现的余数(第一余数)去除除数,
再用出现的余数(第二余数)去除第一余数,如此反复,
直到最后余数是0为止

最小公倍数

两数相乘/最大公约数=最小公倍数

 public static int getRollingNumber(int n1,int n2){
        if(n1<n2)
            n1=n1+n2-(n2=n1);
        while (true){
            if(n2==0||n1%n2==0)
                break;
            int i=n1%n2;
            n1=n2;
            n2=i;
        }
        return n2;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值