rendered paste body#include <stdio.h>double foo(double (*procedure)(double,double),int from,int to){ if(from>to) return 0; else return procedure(foo(procedure,from+1,to),(double)from);}double bar(double (*procedure)(double,double),int from, int to, double start){ if(from > to) return start; else return bar(procedure, from, to-1, procedure(start, (double)to));}double baz(double (*procedure)(double,double), int from, int to, double start){ for(;from <= to; to--) start = procedure(start, (double)to); return start;}double add(double a, double b){ return a+b;}int main(void){ printf("Foo = %f\n", foo(add, 17, 301)); printf("Bar = %f\n", bar(add, 17, 301, 0.)); printf("Baz = %f\n", baz(add, 17, 301, 0.)); return 0;}