38: Understanding the Sum of Triangles and Squares in Python

Understanding the Sum of Triangles and Squares in Python

In this blog post, we’ll explore an interesting mathematical concept and how it can be implemented in Python. The main idea here is that the square of a number can be derived using triangular numbers. We will also touch upon the concept of recursion, which is a powerful tool in programming and mathematics.

Triangular Numbers

A triangular number or triangle number counts objects arranged in an equilateral triangle. The nth triangular number is the number of dots composing a triangle with n dots on a side and is given by the formula: T(n)=n(n+1)2T(n) = \frac{n(n+1)}{2}

For example, the first few triangular numbers are:

  • T(1) = 1
  • T(2) = 3
  • T(3) = 6
  • T(4) = 10

Calculating Triangular Numbers Recursively

We can calculate triangular numbers using a recursive function in Python. Here’s how we can define it:

				
					def triangular_number(n):
    if n == 0:
        return 0
    else:
        return n + triangular_number(n - 1)

# Example usage
print(triangular_number(4))  # Output: 10

				
			

Squares from Triangular Numbers

The interesting part is how we can derive the square of a number using triangular numbers. The key observation is that the square of a number nn can be represented as: n2=T(n)+T(n−1)n^2 = T(n) + T(n-1)

Where T(n)T(n) is the nth triangular number.

Example Calculation

Let’s say we want to calculate 424^2. According to our formula: 42=T(4)+T(3)4^2 = T(4) + T(3) T(4)=10T(4) = 10 T(3)=6T(3) = 6 42=10+6=164^2 = 10 + 6 = 16

Implementing the Formula in Python

We can implement this in Python using our recursive triangular_number function:

				
					def triangular_number(n):
    if n == 0:
        return 0
    else:
        return n + triangular_number(n - 1)

def square_from_triangles(n):
    return triangular_number(n) + triangular_number(n - 1)

# Example usage
print(square_from_triangles(4))  # Output: 16

				
			

Recursion: A Common Pattern

Recursion is a common pattern in mathematics and programming where a function calls itself to solve smaller instances of the same problem. In our triangular_number function, we use recursion to sum the numbers from 1 to n.

Interestingly, the same pattern appears in different contexts. For example, the factorial of a number nn is defined as: n!=n×(n−1)!n! = n \times (n-1)! With the base case 0!=10! = 1.

We can define a factorial function similarly:

				
					def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

# Example usage
print(factorial(4))  # Output: 24

				
			

Conclusion

Understanding the relationship between triangular numbers and squares provides a beautiful insight into how different mathematical concepts are interconnected. By using recursion, we can elegantly compute these numbers in Python. Recognizing these patterns can help you in solving a wide variety of problems efficiently.