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 }