简体   繁体   English

使用 big.Int int 编写帕斯卡三角形

[英]Writing Pascal's Triangle using big.Int int

I have some code for Pascal's Triangle using big.Int .我有一些使用big.Int Pascal 三角形代码。 How do I add the values?如何添加值? I get an error:我收到一个错误:

invalid operation: 
PascalTriangle[r - 1][c - 1] + PascalTriangle[r - 1][c] 
(operator + not defined on struct)

I am using a big.Int array so I cannot use Add from the big package.我使用的是big.Int数组,所以我不能使用big包中的Add

func generatePascalTriangle(n int) [][]big.Int {
    PascalTriangle := make([][]big.Int, n)
    for i := range PascalTriangle {
        PascalTriangle[i] = make([]big.Int, n)
    }
    var one big.Int
    one.SetInt64(1)
    for r := 0; r < n; r++ {
        PascalTriangle[r][0] = one
        PascalTriangle[r][r] = one
    }
    for r := 2; r < n; r++ {
        for c := 1; c < r; c++ {
            PascalTriangle[r][c] = PascalTriangle[r-1][c-1] + PascalTriangle[r-1][c]
        }
    }
    return PascalTriangle
}

I am using big.Int array so cannot use "Add" from "big" package.我正在使用 big.Int 数组,因此不能使用“big”包中的“Add”。


That claim is false.这种说法是错误的。 You can, and you should.你可以,而且你应该。

For example,例如,

package main

import (
    "fmt"
    "math/big"
)

func generatePascalTriangle(n int) [][]big.Int {
    PascalTriangle := make([][]big.Int, n)
    for i := range PascalTriangle {
        PascalTriangle[i] = make([]big.Int, n)
    }
    var one big.Int
    one.SetInt64(1)
    for r := 0; r < n; r++ {
        PascalTriangle[r][0] = one
        PascalTriangle[r][r] = one
    }
    for r := 2; r < n; r++ {
        for c := 1; c < r; c++ {
            // PascalTriangle[r][c] = PascalTriangle[r-1][c-1] + PascalTriangle[r-1][c]
            PascalTriangle[r][c] = *PascalTriangle[r][c].Add(&PascalTriangle[r-1][c-1], &PascalTriangle[r-1][c])
        }
    }
    return PascalTriangle
}

func main() {
    t := generatePascalTriangle(7)
    for i, r := range t {
        for _, n := range r[:i+1] {
            fmt.Print(n.String() + " ")
        }
        fmt.Println()
    }
}

Playground: https://play.golang.org/p/KUGsjr8Mon5游乐场: https : //play.golang.org/p/KUGsjr8Mon5

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 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM