- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# How To Perform nCr (r-combinations) in Golang?

In this tutorial, we will perform nCr(r-combinations) in the Golang programming language. The use case of nCr(r-combinations) is to find the total number of possible arrangements where the order does not matter. In other words, we are selecting the r items from n items where the order does not matter. This tutorial will include two ways to find this in the Golang programming language.

## Explanation

For example, for n =5 and r = 3

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

= 5! / ( 3! * 2! )

= 120 / 12

= 10

### Algorithm

**Step 1** - Declare all the required variables to store n, r, n factorial, r factorial and n-r factorial.

**Step 2** - Initializing the value of n, r, n factorial, r factorial and n-r factorial.

**Step 3** - Finding the factorial of n, r and n-r.

**Step 4** - Find nCr using the above formulae.

**Step 5** - Printing the result.

### Example

In this example, we are going to find nCr using a for loop.

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) }

### Output

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

### Algorithm

**Step 1** - Declare all the required variables to store n, r, n factorial, r factorial and n-r factorial.

**Step 2** - Initializing the value of n, r, n factorial, r factorial and n-r factorial.

**Step 3** - Finding the factorial of n, r and n-r in the separate function.

**Step 4** - Find nCr using the above formulae.

**Step 5** - Printing the result.

### Example

In this example, we are finding the nCr using the separate function to find the factorial of n, r and n-r.

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) }

### Output

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

## Conclusion

These are the two ways to perform nCr(r-combinations) in the Golang programming language. The second way is much better in terms of modularity and code reusability as we can call that function anywhere in the project. To learn more about Golang you can explore these tutorials.