java - Recursive Method to Find Smallest Int? -


this question has answer here:

so i've got assignment have create method takes int[] parameter , returns smallest int. there's 1 problem though...we have use recursion! anyway, here code:

static int[] arr = {12, 8, 4, 17};  public static void main(string[] args){ system.out.println("minimum :" + findmin(arr)); }  public static int findmin(int[] iarray){     if(arr.length == 0) {         system.err.println("please pass array @ least 1 element.");         return (integer) null;     }     else return findminfromarray(iarray, 0, iarray[0]); //call method starting parameters ie index = 0 & min = iarray[0] }  private static int findminfromarray(int[] iarray, int index, int min) {     if(index <= (iarray.length - 1)){         if(iarray[index] < min){             min = iarray[index];         }         system.out.println("before: " + "index = " + index + " | min = " + min);         findminfromarray(iarray, index + 1, min);     }     system.out.println("after: " + "index = " + index + " | min = " + min);     return min; } 

and here output...

before: index = 0 | min = 12 before: index = 1 | min = 8 before: index = 2 | min = 4 before: index = 3 | min = 4 after: index = 4 | min = 4 after: index = 3 | min = 4 after: index = 2 | min = 4 after: index = 1 | min = 8 after: index = 0 | min = 12 minimum :12 

so can see, code kind of working, i'm not sure how program stop, rather going again it's doing.

your mistake ignoring result of recursive call.

change

findminfromarray(iarray, index + 1, min); 

to

return findminfromarray(iarray, index + 1, min); 

the full fixed method :

private static int findminfromarray(int[] iarray, int index, int min) {     if(index <= (iarray.length - 1)){         if(iarray[index] < min){             min = iarray[index];         }         system.out.println("before: " + "index = " + index + " | min = " + min);         return findminfromarray(iarray, index + 1, min);     }     system.out.println("after: " + "index = " + index + " | min = " + min);     return min; } 

output :

before: index = 0 | min = 12 before: index = 1 | min = 8 before: index = 2 | min = 4 before: index = 3 | min = 4 after: index = 4 | min = 4 

Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -