void partitionEvenHelper(int budget, int *partition, int pos) { //BASE CASE!!! if (budget <= 0){ printpartition(partition, pos); return; } //INDUCTIVE CASE!!!!! int spending; for(spending = 2; spending <= budget ; spending += 2){ partition[pos] = spending; partitionEvenHelper(budget - spending, partition, pos + 1); } }
void partitionEvenHelper(int N, int * partition, int pos) { //BASE CASE if(N == 0) { printPartition(partition, pos); return; } //INDUCTIVE CASE int i; for(i = 2; i <= N; i+= 2) { partition[pos] = i; partitionEvenHelper(N - i, partition, pos + 1); } }
void partitionEven(int value) { int *partition = malloc(sizeof(int) * value); partitionEvenHelper(value, partition, 0); free(partition); }