Golang 递归打印杨辉三角

package main

import "fmt"

func main() {
    YangHuiTriangle(10)
}

func YangHuiTriangle(n int) []int {
    i := n - 1
    line := make([]int, n)
    if i <= 0 {
        line = []int{1}
        fmt.Println(line)
        return line
    }
    down := YangHuiTriangle(i)
    for x := 0; x < n; x++ {
        if x == 0 {
            line[0] = 1
            continue
        }
        if x == n-1 {
            line[x] = 1
            continue
        }
        line[x] = down[x-1] + down[x]
    }
    fmt.Println(line)
    return line
}

结果:

Golang 递归打印杨辉三角

如有更好方法请指教

本作品采用《CC 协议》,转载必须注明作者和本文链接
做自己
讨论数量: 2
awesee
package main

import "fmt"

func main() {
    // 杨辉三角的前 n 行
    generate(10)
}

func generate(numRows int) [][]int {
    ans := make([][]int, numRows)
    for i := 0; i < numRows; i++ {
        row := make([]int, i+1)
        row[0], row[i] = 1, 1
        for j := 1; j < i; j++ {
            row[j] = ans[i-1][j-1] + ans[i-1][j]
        }
        ans[i] = row
        fmt.Println(row)
    }
    return ans
}

// output:
// [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]
4年前 评论
awesee
package main

import "fmt"

func main() {
    // 返回杨辉三角的第 n 行
    row := getRow(10)
    fmt.Println(row)
}

func getRow(rowIndex int) []int {
    row := make([]int, rowIndex+1)
    row[0], row[rowIndex] = 1, 1
    for i := 1; i < rowIndex; i++ {
        row[i] = row[i-1] * (rowIndex - i + 1) / i
    }
    return row
}

// output:
// [1 10 45 120 210 252 210 120 45 10 1]
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!