
-----------------------------------
username123
Sun Nov 01, 2015 11:32 am

Stack overflow
-----------------------------------
When I try to run this code, I always get a stack overflow, and I don't know why. It works when I get rid of triangle on line 13 though, but I need this to be recursive.

public int triangle(int rows) 
{
  if(rows == 0)
  {
    return 0;
  }
  else if(rows == 1)
  {
    return 1;
  }
  else
  {
    return triangle(rows * (rows + 1)/2);
  }
}

-----------------------------------
Insectoid
Sun Nov 01, 2015 12:46 pm

RE:Stack overflow
-----------------------------------
A stack overflow happens when your program recurses too many times in a row. In this case, it's probably because rows never reaches 0 or 1, so it's recursing infinitely. Does line 13 ever resolve rows to 0 or 1?

-----------------------------------
username123
Sun Nov 01, 2015 1:42 pm

Re: RE:Stack overflow
-----------------------------------
A stack overflow happens when your program recurses too many times in a row. In this case, it's probably because rows never reaches 0 or 1, so it's recursing infinitely. Does line 13 ever resolve rows to 0 or 1?
That's what I tried to do with lines 3 - 10, but I didn't do it properly. I made it work though.

public int triangle(int rows) 
{
  if(rows == 0)
  {
    return 0;
  }
  return rows + triangle(rows - 1);
}

