#include int rcalc ( int n, int fgn, int cfn , int level) { int retval = 0,i; printf("level: %d n %d fgn %d cfn %d \n", level, n,fgn, cfn); level ++; if ( n/fgn < fgn ) retval = n%fgn * cfn; else retval += rcalc(n/fgn, fgn, cfn, level); retval += n + (fgn-1) * fgn * cfn; // now calculate how many to do on this level // return retval; } main () { int r, n, fgn, cfn; printf(" \n State explosion FMMD approximation \n"); printf(" Enter number of base components: "); fflush(stdout); scanf("%d",&n); printf(" Enter number of components in functional group: "); fflush(stdout); scanf("%d",&fgn); printf(" Enter number of failure modes for each component:"); fflush(stdout); scanf("%d",&cfn); r = rcalc ( n, fgn, cfn, 0 ); printf(" for single failures FMMD=%d components cross prod failure modes %d\n",r,n*(n-1)*cfn); }