I used the debugger to examine this code but not understanding a couple areas.

  1. Why does the for loop repeat after it exits to print a new line? If it exits the loop, shouldn’t it be done with it?
  2. Why is n incremented and not i as stated with i++?

int main(void)
{
    int height = get_int("Height: ");

    draw(height);
}

void draw(int n)
{
    if (n <= 0)
    {
        return;
    }

    draw(n - 1);

    for (int i = 0; i < n; i++)
    {
        printf("#");
    }
    printf("\n");
}
  • milon@lemm.eeOP
    link
    fedilink
    arrow-up
    2
    ·
    11 months ago

    Yes - I finally caught that part about n as it’s just moving in reverse so it gets decremented. Now I’m not sure about i. In the debugger when the program gets to the for loop both n and i are equal to 1. The n I understand but i?

    • dneaves@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      11 months ago

      i starts at 0, checks if i is less than n (the first time it will be, no matter what), prints a “#”, then increments i by 1 and loops

    • Faresh
      link
      fedilink
      English
      arrow-up
      1
      ·
      11 months ago

      i starts with the value 0, for me.