java - Better way to return from recursive function when there are 2^n conditions -
suppose have n = 3 boolean variables -- a, b , c in java.
these variables can have total of 8 (2^n = 2^3) combinations.
these conditions used determine return statement in recursive function follows:
static int recursivefunc(int x){ boolean a, b, c; = getboolval(x); b = getboolval(x + 1); c = getboolval(x + 2); if(a == true && b == true && c == true) //7 return recursivefunc(x + 1) + recursivefunc(x + 2) + recursivefunc(x + 3); else if(a == true && b == true && c == false) //6 return recursivefunc(x + 1) + recursivefunc(x + 2); else if(a == true && b == false && c == true) //5 return recursivefunc(x + 1) + recursivefunc(x + 3); else if(a == true && b == false && c == false) //4 return recursivefunc(x + 1); else if(a == false && b == true && c == true) //3 return recursivefunc(x + 2) + recursivefunc(x + 3); else if(a == false && b == true && c == false) //2 return recursivefunc(x + 2); else if(a == false && b == false && c == true) //1 return recursivefunc(x + 3); else //0 return 0; } static boolean getboolval(int x){ if(some condition respect x) return true; else return false; } as can see, number of conditions pretty lengthy increasing value of n.
however, return statement can generated in n + 2 steps (instead of 2^n) follows:
string returnstat = ""; if(a == true) returnstat += "recursivefunc(x + 1) + "; if(b == true) returnstat += "recursivefunc(x + 2) + "; if(c == true) returnstat += "recursivefunc(x + 3) + "; if(returnstat == "") returnstat = "0"; else returnstat = returnstat.substring(0, returnstat.length() - 3); //removing " + " is there anyway in can return returnstat statement? perhaps, --
return stringtocode(returnstat); if not, how overcome situation?
recursivefunc returns int, add ints:
int result = 0; if (a) result += recursivefunc(x + 1); if (b) result += recursivefunc(x + 2); if (c) result += recursivefunc(x + 3); return result;
Comments
Post a Comment