Go 实现杨辉三角

原文: Go 语言数组

   Diya

使用数组来打印杨辉三角

根据上一行的内容,来获取下一行的内容并打印出来。

package main
import "fmt"
func GetYangHuiTriangleNextLine(inArr []int) []int {
    var out []int
    var i int
    arrLen := len(inArr)
    out = append(out, 1)
    if 0 == arrLen {
        return out
    }
    for i = 0; i < arrLen-1; i++ {
        out = append(out, inArr[i]+inArr[i+1])
    }
    out = append(out, 1)
    return out
}
func main() {
    nums := []int{}
    var i int
    for i = 0; i < 10; i++ {
        nums = GetYangHuiTriangleNextLine(nums)
        fmt.Println(nums)
    }
}

输出结果为:

[1]
[1 1]
[1 2 1]
[1 3 3 1]
[1 4 6 4 1]
[1 5 10 10 5 1]
[1 6 15 20 15 6 1]
[1 7 21 35 35 21 7 1]
[1 8 28 56 70 56 28 8 1]
[1 9 36 84 126 126 84 36 9 1]
更多解析

  初学者小在在

我也来一个杨辉三角:

package main
import "fmt"

func triangle(n int) {
    var item  []int 
    for i:=1;i<=n;i++ {
        item_len:=len(item)
        if item_len==0 {
            item = append(item,1)
        } else {
            temp_s := []int{1}
            for j:=0;j<item_len-1;j++ {
                    temp_s=append(temp_s,item[j]+item[j+1])
            }
            temp_s=append(temp_s,1)
            item = temp_s
        }
        fmt.Println(item)
    }
}


func main(){  
    triangle(13)
}

  kam

那我也来输出一个杨辉三角吧:

package main

import "fmt"

func main() {
   yanghuisanjiao(12)
}

func yanghuisanjiao(rows int) {
   for i := 0; i < rows; i++ {
      number := 1;
      for k := 0; k < rows-i; k++ {
         fmt.Print("  ")
      }
      for j := 0; j <= i; j++ {
         fmt.Printf("%5d", number)
         number = number * (i - j) / (j + 1);
      }
      fmt.Println()
   }
}

打印结果:

                            1
                          1    1
                        1    2    1
                      1    3    3    1
                    1    4    6    4    1
                  1    5   10   10    5    1
                1    6   15   20   15    6    1
              1    7   21   35   35   21    7    1
            1    8   28   56   70   56   28    8    1
          1    9   36   84  126  126   84   36    9    1
        1   10   45  120  210  252  210  120   45   10    1
      1   11   55  165  330  462  462  330  165   55   11    1
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

点我查看本站打赏源码!

忘记密码?

如何获取邀请码?

关闭