Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Suppose you are building a program which draws several stars on the console. On

ID: 3691702 • Letter: S

Question

Suppose you are building a program which draws several stars on the console. On the first three lines, there should be 1, 2, and 3 stars, respectively. On all subsequent lines, the number of stars should either be twice the number of stars 2/3 of the way up the screen, for lines numbers that are exact multiples of three, or otherwise 2 more than the preceding line. Write a recursive definition for the number of stars on each line.

Then, implement the recursive function from above, add a method to draw any number of stars (that can be iterative, i.e. using a loop, or it can be recursive), and call it enough times print stars on 54 lines.

The first few lines should look like this:

Explanation / Answer

Solution:

1. Recursive definition:

----------------------------------------------------

if lineNumber==1   numberOfStars = 1

if lineNumber==2 numberOfStars = 2
if lineNumber == 3 numberOfStars = 3
if lineNumber > 3 and lineNumber%3 == 0

   totalStars=0
   totalStars=totalStars+calculateStarsForLine(lineNumber-1)
numberOfStars=2*2/3*totalStars;
else numberOfStars= calculateStarsForLine(lineNumber-1)+2;
------------------------------------------------------------

2. Recursive function:

----------------------------------------------------------

int calculateStarsForLine(int lineNumber)
   {
       int numberOfStars=0;
       if(lineNumber<=0)
           return numberOfStars;
      
       if(lineNumber==1)
           numberOfStars = 1;
       else if(lineNumber==2)
           numberOfStars = 2;
       else if(lineNumber==3)
           numberOfStars = 3;
       else if(lineNumber > 3)
       {
           if(lineNumber%3==0)
           {
               int totalStars=0;
               totalStars+=calculateStarsForLine(lineNumber-1);
               //System.out.println("total stars:"+totalStars);
               numberOfStars=(int)(2*2/3*totalStars);
           }
           else
           {
               numberOfStars= calculateStarsForLine(lineNumber-1)+2;
           }
       }
       return numberOfStars;
   }

---------------------------------------------------

3. Complete program:

-----------------------------------------------------

public class Stars {

   int calculateStarsForLine(int lineNumber)
   {
       int numberOfStars=0;
       if(lineNumber<=0)
           return numberOfStars;
      
       if(lineNumber==1)
           numberOfStars = 1;
       else if(lineNumber==2)
           numberOfStars = 2;
       else if(lineNumber==3)
           numberOfStars = 3;
       else if(lineNumber > 3)
       {
           if(lineNumber%3==0)
           {
               int totalStars=0;
               totalStars+=calculateStarsForLine(lineNumber-1);
               //System.out.println("total stars:"+totalStars);
               numberOfStars=(int)(2*2/3*totalStars);
           }
           else
           {
               numberOfStars= calculateStarsForLine(lineNumber-1)+2;
           }
       }
       return numberOfStars;
   }
   /**
   * @param args
   */
   public static void main(String[] args) {
       // TODO Auto-generated method stub
       char star='*';
       int lines=54;
       Stars stars=new Stars();
       int previousLine=0,numberOfStars=0;
       for(int i=1;i<=lines;i++)
       {
           //System.out.println("line:"+i);
           numberOfStars=stars.calculateStarsForLine(i);
           //System.out.println("Number of stars:"+numberOfStars);
           for(int j=1;j<=numberOfStars;j++)
           {
               System.out.print(star);
           }
           System.out.print(" ");
           /*previousLine++;
           //int numberOfStars=0;
           if(i<=3)
           {
               numberOfStars=i;
               for(int j=1;j<=numberOfStars;j++)
               {
                   System.out.print(star);
               }
           }
           else
           {
               if((i>3) && (i%3==0))
               {
                   numberOfStars=numberOfStars*2;
                   for(int j=1;j<=numberOfStars;j++)
                   {
                       System.out.print(star);
                   }
                  
               }
               else
               {
                   numberOfStars=numberOfStars+2;
                   for(int j=1;j<=numberOfStars;j++)
                   {
                       System.out.print(star);
                   }
               }
           }
          
           System.out.print(" ");*/
       }
   }
}

----------------------------------------------------------------------------