// We have triangle made of blocks.
// The topmost row has 1 block, the next row down has 2 blocks,
// the next row has 3 blocks, and so on. Compute recursively (no loops or multiplication)
// the total number of blocks in such a triangle with the given number of rows.
//
// triangle(0) → 0
// triangle(1) → 1
// triangle(2) → 3
#include <stdio.h>
// To enable debug messages uncomment #define
#define TEST 1
int triangle(int rows);
void startTesting();
int main(void) {
#ifdef TEST
startTesting();
#endif
return 0;
}
int triangle(int rows) {
if (rows == 0) {
return 0;
}
if (rows == 1) {
return 1;
}
return rows + triangle(rows - 1);
}
void startTesting()
{
int result = 0;
int i = 0;
for (i = 0; i <= 5; i++) {
result = triangle(i);
printf("Triangle(%d) = %d\n", i
, result
); }
}