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

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -