// Arup Guha
// 2/14/2017
// Solution to CS1 Exam 1 Question 6, Code for Question 7 Trace

#include <stdio.h>

int geoSum(int firstTerm, int ratio, int numTerms);
int f(int n);

// Test both.
int main() {
    printf("sum 3,6,12,24 = %d\n", geoSum(3,2,4));
    printf("f(3) = %d, f(4) = %d, f(5) = %d.\n", f(3), f(4), f(5));
    return 0;
}

int geoSum(int firstTerm, int ratio, int numTerms) {

    // Adding nothing yields nothing.
    if (numTerms == 0) return 0;

    // Take out the first term. The rest is a geometric sequence of n-1
    // terms, with the same ratio, but the starting term being the
    // second term of the original sequence (firstTerm*ratio).
    return firstTerm + geoSum(firstTerm*ratio, ratio, numTerms-1);
}

int f(int n) {
    if (n == 0) return 3;
    int sum = 0, i;
    for (i=0; i<n; i++)
        sum += f(i);
    return sum;
}

