Go学习笔记(五)

多重循环控制

1、将一个循环放到另一个循环内,就形成了嵌套循环,在外边的FOR成为外层循环,在里面的for循环成为内层循环(不建议超过3层循环)

2、实际上,嵌套循环就是把内层循环当初外层循环的循环体,只有内层的循环条件为false时,才会完全跳出内层循环,才可以结束外层的当次循环,开始下一次的循环

3、设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次

 

编程思路:

1、先易后难,将一个复杂的问题拆解成一个简单的问题

2、先死后活,先写死,然后用变量做活

 

打印半边金字塔

for i := 1; i <= 9; i++ {
   for j := 1; j <= i; j++ {
      fmt.Print("*")
   }
   fmt.Println()
}

 这里print和println的区别

print是不会有空行且换行的

println则会有空格和换行

 

打印金字塔

	var totallevel int = 9
	for i := 1; i <= totallevel; i++ {
		for k := 1; k <= totallevel - i; k++ {
			fmt.Print(" ")
		}

		for j := 1; j <= 2 * i - 1; j++ {
			fmt.Print("*")
		}
		fmt.Println()
	}

 打印空心金字塔

	var totallevel int = 9
	for i := 1; i <= totallevel; i++ {
		for k := 1; k <= totallevel - i; k++ {
			fmt.Print(" ")
		}

		for j := 1; j <= 2 * i - 1; j++ {
			if j == 1 || j == 2 * i - 1 || i == totallevel {
				fmt.Print("*")
			} else {
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}

 打印空心菱形

package main

import "fmt"

func main() {

	///打印空心菱形
	///先打印菱形的上半部分
	/// 上半部分是每层 * 的个数 = 2 * 当前层 - 1
	/// 空格 = 总层数 - 当前层
	/// totallevel - 1 每层 * 的个数 = totallevel  * 3 - (2 * i + totalleverl) - 1
	

	var totallevel int = 9
	for i := 1; i <= totallevel; i++ {
		for k := 1; k <= totallevel - i; k++ {
			fmt.Print(" ")
		}

		for j := 1; j <= 2 * i - 1; j++ {
			if j == 1 || j == 2 * i - 1 {
				fmt.Print("*")
			} else {
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}

	for i := 1; i <= totallevel - 1; i++{
		for k := 1; k <= i; k++ {
			fmt.Print(" ")
		}
		for j := 1; j <= 3 * totallevel - (2 * i + totallevel) - 1; j++ {
			if j == 1 || j == 3 * totallevel - (2 * i + totallevel) - 1 {
				fmt.Print("*")
			} else {
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}
}

 

posted @ 2022-04-26 12:12  黑羽青衣  阅读(18)  评论(0编辑  收藏  举报