如何在Go語言中執行nCr(r-組合)?


在本教程中,我們將使用Go程式語言執行nCr(r-組合)。nCr(r-組合)的用例是找到不考慮順序的所有可能排列的總數。換句話說,我們從n個專案中選擇r個專案,而順序無關緊要。本教程將包括兩種在Go程式語言中找到此結果的方法。

解釋

例如,對於n = 5和r = 3

nCr = n! / ( r! * ( n - r )! )

= 5! / ( 3! * 2! )

= 120 / 12

= 10

演算法

步驟1 - 宣告所有需要的變數來儲存n、r、n的階乘、r的階乘和n-r的階乘。

步驟2 - 初始化n、r、n的階乘、r的階乘和n-r的階乘的值。

步驟3 - 找到n、r和n-r的階乘。

步驟4 - 使用上述公式計算nCr。

步驟5 - 列印結果。

示例

在這個例子中,我們將使用for迴圈來計算nCr。

package main

// fmt package provides the function to print anything
import (
   "fmt"
)
func main() {
   
   // declaring the variables to store the value of n, r and answer
   var n, r, nFactorial, rFactorial, nminusrFactorial, answer int
   fmt.Println("Program to find the nCr using the for loop.")
   
   // initializing the value of n 
   n = 10
   
   // initializing the value of r
   r = 8
   nFactorial = 1
   
   // finding factorial of n
   for i := 1; i <= n; i++ {
      nFactorial = nFactorial * i
   }
   rFactorial = 1
   
   // finding factorial of r
   for i := 1; i <= r; i++ {
      rFactorial = rFactorial * i
   }
   nminusrFactorial = 1
   
   // finding factorial of n - r
   for i := 1; i <= n-r; i++ {
      nminusrFactorial = nminusrFactorial * i
   }
   
   // finding answer by using the formulae
   answer = nFactorial / (rFactorial * nminusrFactorial)
   
   // printing the result
   fmt.Println("The value of nCr with n =", n, "and r=", r, "is", answer)
}

輸出

Program to find the nCr using the for loop.
The value of nCr with n = 10 and r= 8 is 45

演算法

步驟1 - 宣告所有需要的變數來儲存n、r、n的階乘、r的階乘和n-r的階乘。

步驟2 - 初始化n、r、n的階乘、r的階乘和n-r的階乘的值。

步驟3 - 在單獨的函式中找到n、r和n-r的階乘。

步驟4 - 使用上述公式計算nCr。

步驟5 - 列印結果。

示例

在這個例子中,我們使用單獨的函式來找到n、r和n-r的階乘,從而計算nCr。

package main

// fmt package provides the function to print anything
import (
   "fmt"
)

// this is a recursive function of return type int

// which is returning the factorial of number

// passed in argument
func factorial(n int) int {
   if n == 1 {
      return 1
   }
   return factorial(n-1) * n
}
func main() {
   
   // declaring the variables to store the value of n, r and answer
   var n, r, nFactorial, rFactorial, nminusrFactorial, answer int
   fmt.Println("Program to find the nCr using the separate function to find the factorial of n, r and, n-r.")
   
   // initializing the value of n
   n = 10
   
   // initializing the value of r
   r = 8
   
   // finding factorial of n
   nFactorial = factorial(n)
   
   // finding factorial of r
   rFactorial = factorial(r)
   
   // finding factorial of n - r 
   nminusrFactorial = factorial(n - r)
   
   // finding answer by using the formulae
   answer = nFactorial / (rFactorial * nminusrFactorial)
   
   // printing the result
   fmt.Println("The value of nCr with n =", n, "and r=", r, "is", answer)
} 

輸出

Program to find the nCr using the separate function to find the factorial of n, r and, n-r.
The value of nCr with n = 10 and r= 8 is 45

結論

這是在Go程式語言中執行nCr(r-組合)的兩種方法。第二種方法在模組化和程式碼可重用性方面更好,因為我們可以在專案的任何地方呼叫該函式。要了解更多關於Go的資訊,您可以瀏覽這些教程。

更新於:2022年11月29日

451 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.