java - Why do I get a Stackoverflow Error? -
i have little recursive algorithm should guess number. call method guessnumber , give number , lower value number , higher value number. if value higher middle of area of numbers makes same process new area of numbers. value lower makes same lower area of numbers. , if none of these cases true returns max value (it min value because they're same @ point). why gives stackoverflowerror? don't see why programm can't end. appreaciated. thank you.
public class starter { /** * @param args command line arguments */ public static void main(string[] args) { starter s = new starter(); system.out.println(s.guessnumber(18, 1, 100)); } public int guessnumber(int num, int min, int max) { int middle = (max - (min - 1)) / 2; if (num > middle) { guessnumber(num, middle + 1, max); } else if (num < middle) { guessnumber(num, min, middle); } return max; } } now don't error anymore code:
public int guessnumber(int num, int min, int max) { int middle = (max + min) / 2; if (num > middle) { return guessnumber(num, middle + 1, max); } else if (num < middle) { return guessnumber(num, min, middle); } return max; } but number isn't correct. if call way guessnumber(18, 1, 100) expected output should 18 19. , if call way guessnumber(34, 1, 100) ouput 37
first of all, forgot return value of recursive calls.
second of all, calculation of middle wrong. example, if min 10 , max 20, calculation assign 5 middle, instead of 15.
public int guessnumber(int num, int min, int max) { if (min == max) { return min; } int middle = (max + min) / 2; if (num > middle) { return guessnumber(num, middle + 1, max); } else { return guessnumber(num, min, middle); } }
Comments
Post a Comment