- 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

# Haskell Program to Find Sum of N Numbers Using Recursion

In Haskell, we can find Sum of N Numbers by using recursion, tail-recursion and fold-recursion. In the first example we are going to use base case, (sum_n [] = 0) and recursive case, (sum_n (x:xs) = x + sum_n xs)) and in second example, we are going to use, tail-recursion. And in the third example, we are going to use (sumOfN''' xs = foldr (+) 0 xs) function.

## Algorithm

**Step 1**− The recursive sum_n function is defined as,

For example 1 −

sum_n [] = 0 sum_n (x:xs) = x + sum_n xs.

For example 2 −

sumOfN' acc 0 = acc sumOfN' acc n = sumOfN' (acc + n) (n-1).

For example 3 −

sumOfN''' xs = foldr (+) 0 xs.

**Step 2**− Program execution will be started from main function. The main() function has whole control of the program. It is written as main = do. In the main function, we create a list of numbers and pass it to the sum_n function to find the sum. The result is then printed.**Step 3**− The variable named, “numbers” is being initialized. It will hold the list of numbers whose sum is to be computed.**Step 4**− The resultant sum of the numbers is printed to the console using ‘print’ function, after the sum_n function is called.

## Example 1

In this example, the function sum_n takes a list of integers as an input and uses a pattern matching to check if the list is empty. If it is, it returns 0.

If the list is not empty, it takes the first element (x) and adds it to the sum of the rest of the list (xs). This is done using the sum_n function recursively.

sum_n :: [Integer] -> Integer sum_n [] = 0 sum_n (x:xs) = x + sum_n xs main :: IO () main = do let numbers = [1,2,3,4,5] print (sum_n numbers)

## Output

15

## Example 2

In this example, a tail-recursive function sumOfN' is defined that takes in two arguments: an accumulator acc and n. The base case is when n equals 0, in which case the function returns the value of acc. In all other cases, the function returns the result of calling sumOfN' with the arguments acc + n and n-1. The function uses an accumulator to keep track of the sum and avoid stack overflow.

sumOfN' :: (Eq a, Num a) => a -> a -> a sumOfN' acc 0 = acc sumOfN' acc n = sumOfN' (acc + n) (n-1) main = print (sumOfN' 0 5)

## Output

15

## Example 3

In this example, the foldr function is used to find the sum of elements in the list. The foldr function takes a binary function, a list, and applies the binary function to the elements of the list, folding the list up into a single value. In this case, the binary function is (+) and the initial value is 0, so it add the elements of the list one by one starting from the right side.

sumOfN''' :: (Num a) => [a] -> a sumOfN''' xs = foldr (+) 0 xs main = print (sumOfN''' [1,2,3,4,5])

## Output

15

## Conclusion

In Haskell, the sum of n numbers can be calculated using recursion with user defined function, or by using tail or fold recursive approaches.

- Related Articles
- Haskell Program to Find the Sum of Natural Numbers using Recursion
- Java Program to Find Sum of N Numbers Using Recursion
- Golang Program to Find the Sum of N Numbers using Recursion
- Haskell Program to Find the Product of Two Numbers Using Recursion
- Haskell Program to Find Sum of Digits of a Number using Recursion
- Haskell Program to find the LCM of two given numbers using recursion
- Haskell Program to find the GCD of two given numbers using recursion
- C++ program to Find Sum of Natural Numbers using Recursion
- Haskell Program to Find G.C.D Using Recursion
- Java Program to Find the Sum of Natural Numbers using Recursion
- Golang Program to Find the Sum of Natural Numbers using Recursion
- Haskell Program to Find Factorial of a Number Using Recursion
- Haskell Program to find the reverse of a given number using recursion
- How to Find Sum of Natural Numbers Using Recursion in Python?
- C++ Program to Find Fibonacci Numbers using Recursion