bool runReady = false; int rows = 0; int[] last = new int[1]; last[0] = 1; int[] current = new int[last.Length + 1]; while (!runReady) { //Try to parse the number Console.Write("Please enter the number of rows: "); if (!Int32.TryParse(Console.ReadLine(), out rows)) { //If we cant, skip the rest with continue Console.WriteLine("Please enter a valid number"); continue; } //If parsed we get out of the loop runReady = true; } Console.WriteLine(); Console.WriteLine(last[0]); //Looping through all of the rows to calculate the next numbers for (int i = 0; i < rows + 1; i++) { for (int j = 0; j < current.Length; j++) { current[j] = FindAdditon(last, j); Console.Write(current[j] + " "); } //Change the current array to the last and reform the array to one size larger Console.WriteLine(); last = current; current = new int[last.Length + 1]; } } // Finds the upper left and right numbers public static int FindAdditon(int[] last, int position) { int r = 0; //Checking the upper right number if (last.Length > position) r += last[position]; //Checking the upper left number if (position - 1 >= 0) r += last[position - 1]; return r; }