github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/testdata/courses/qf104-2022/meling-labs/lab2/sequence/triangular.go (about)

     1  package sequence
     2  
     3  // triangular(n) returns the n-th Triangular number, and is defined by the
     4  // recurrence relation F_n = n + F_n-1 where F_0=0 and F_1=1
     5  //
     6  // Visualization of numbers:
     7  // n = 1:    n = 2:     n = 3:      n = 4:    etc...
     8  //
     9  //	o         o          o           o
    10  //	         o o        o o         o o
    11  //	                   o o o       o o o
    12  //	                              o o o o
    13  func triangularRecurrence(n uint) uint {
    14  	if n == 0 {
    15  		return 0
    16  	}
    17  	if n == 1 {
    18  		return 1
    19  	}
    20  	return n + triangular(n-1)
    21  }
    22  
    23  // Direct mathematical solution:
    24  
    25  func triangularFormula(n uint) uint {
    26  	return (n * (n + 1)) / 2
    27  }
    28  
    29  func triangular(n uint) uint {
    30  	sum := uint(0)
    31  	for i := uint(1); i <= n; i++ {
    32  		sum += i
    33  	}
    34  	return sum
    35  }