Dada una array de enteros, imprima un triángulo de suma de modo que el primer nivel tenga todos los elementos de la array. A partir de entonces, en cada nivel el número de elementos es uno menos que en el nivel anterior y los elementos en el nivel son la suma de dos elementos consecutivos en el nivel anterior.
Ejemplo :
Input : A = {1, 2, 3, 4, 5} Output : [48] [20, 28] [8, 12, 16] [3, 5, 7, 9] [1, 2, 3, 4, 5] Explanation : Here, [48] [20, 28] -->(20 + 28 = 48) [8, 12, 16] -->(8 + 12 = 20, 12 + 16 = 28) [3, 5, 7, 9] -->(3 + 5 = 8, 5 + 7 = 12, 7 + 9 = 16) [1, 2, 3, 4, 5] -->(1 + 2 = 3, 2 + 3 = 5, 3 + 4 = 7, 4 + 5 = 9)
Acercarse :
- La recursividad es la clave. En cada iteración, cree una nueva array que contenga la Suma de elementos consecutivos en la array que pasa como parámetro.
- Realice una llamada recursiva y pase la array recién creada en el paso anterior.
- Mientras retrocede, imprima la array (para imprimir en orden inverso).
la
C++
// C++ program to create Special triangle. #include<bits/stdc++.h> using namespace std; // Function to generate Special Triangle void printTriangle(int A[] , int n) { // Base case if (n < 1) return; // Creating new array which contains the // Sum of consecutive elements in // the array passes as parameter. int temp[n - 1]; for (int i = 0; i < n - 1; i++) { int x = A[i] + A[i + 1]; temp[i] = x; } // Make a recursive call and pass // the newly created array printTriangle(temp, n - 1); // Print current array in the end so // that smaller arrays are printed first for (int i = 0; i < n ; i++) { if(i == n - 1) cout << A[i] << " "; else cout << A[i] << ", "; } cout << endl; } // Driver function int main() { int A[] = { 1, 2, 3, 4, 5 }; int n = sizeof(A) / sizeof(A[0]); printTriangle(A, n); } // This code is contributed by Smitha Dinesh Semwal
Java
// Java program to create Special triangle. import java.util.*; import java.lang.*; public class ConstructTriangle { // Function to generate Special Triangle. public static void printTriangle(int[] A) { // Base case if (A.length < 1) return; // Creating new array which contains the // Sum of consecutive elements in // the array passes as parameter. int[] temp = new int[A.length - 1]; for (int i = 0; i < A.length - 1; i++) { int x = A[i] + A[i + 1]; temp[i] = x; } // Make a recursive call and pass // the newly created array printTriangle(temp); // Print current array in the end so // that smaller arrays are printed first System.out.println(Arrays.toString(A)); } // Driver function public static void main(String[] args) { int[] A = { 1, 2, 3, 4, 5 }; printTriangle(A); } }
Python3
# Python3 program to create Special triangle. # Function to generate Special Triangle. def printTriangle(A): # Base case if (len(A) < 1): return # Creating new array which contains the # Sum of consecutive elements in # the array passes as parameter. temp = [0] * (len(A) - 1) for i in range( 0, len(A) - 1): x = A[i] + A[i + 1] temp[i] = x # Make a recursive call and pass # the newly created array printTriangle(temp) # Print current array in the end so # that smaller arrays are printed first print(A) # Driver function A = [ 1, 2, 3, 4, 5 ] printTriangle(A) # This code is contributed by Smitha Dinesh Semwal
C#
// C# program to create Special triangle. using System; public class ConstructTriangle { // Function to generate Special Triangle static void printTriangle(int []A, int n) { // Base case if (n < 1) return; // Creating new array which contains the // Sum of consecutive elements in // the array passes as parameter. int []temp = new int[n - 1]; for (int i = 0; i < n - 1; i++) { int x = A[i] + A[i + 1]; temp[i] = x; } // Make a recursive call and pass // the newly created array printTriangle(temp, n - 1); // Print current array in the end so // that smaller arrays are printed first for (int i = 0; i < n ; i++) { if(i == n - 1) Console.Write(A[i] + " "); else Console.Write(A[i] + ", "); } Console.WriteLine(); } // Driver function public static void Main() { int[] A = { 1, 2, 3, 4, 5 }; int n = A.Length; printTriangle(A,n); } } //This code contributed by 29AjayKumar
PHP
<?php // PHP program to create // Special triangle. // Function to generate // Special Triangle function printTriangle($A , $n) { // Base case if ($n < 1) return; // Creating new array which // contains the Sum of // consecutive elements in // the array passes as parameter. $temp[$n - 1] = 0; for ($i = 0; $i < $n - 1; $i++) { $x = $A[$i] + $A[$i + 1]; $temp[$i] = $x; } // Make a recursive call and // pass the newly created array printTriangle($temp, $n - 1); // Print current array in the // end so that smaller arrays // are printed first for ($i = 0; $i < $n ; $i++) { if($i == $n - 1) echo $A[$i] , " "; else echo $A[$i] , ", "; } echo "\n"; } // Driver Code $A = array( 1, 2, 3, 4, 5 ); $n = sizeof($A); printTriangle($A, $n); // This code is contributed // by nitin mittal. ?>
Javascript
<script> // JavaScript program to create Special triangle. // Function to generate Special Triangle function printTriangle(A, n) { // Base case if (n < 1) return; // Creating new array which contains the // Sum of consecutive elements in // the array passes as parameter. var temp = new Array(n - 1); for (var i = 0; i < n - 1; i++) { var x = A[i] + A[i + 1]; temp[i] = x; } // Make a recursive call and pass // the newly created array printTriangle(temp, n - 1); // Print current array in the end so // that smaller arrays are printed first for (var i = 0; i < n ; i++) { if(i == n - 1) document.write( A[i] + " "); else document.write( A[i] + ", "); } document.write("<br>"); } // Driver function var A = [ 1, 2, 3, 4, 5 ]; var n = A.length; printTriangle(A,n); </script>
Producción
48 20, 28 8, 12, 16 3, 5, 7, 9 1, 2, 3, 4, 5
Enfoque recursivo (sin usar el bucle For dentro de la función printTriangle()):
Acercarse :
- En cada iteración, creamos una nueva array (temp []) en la función printTriangle(), que contiene la suma de los elementos consecutivos de la array de entrada.
- Ahora pasó la array recién creada (temp []) en la llamada recursiva de la función printTriangle().
- Repita los pasos 1 y 2 hasta que el tamaño de la array temp[] no sea igual a 1.
Java
/*package whatever //do not write package name here */ import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { //input Array int[] x = { 1, 2, 3, 4, 5 }; //Recursive function that will print answer printTriangle(x); System.out.println(Arrays.toString(x)); } static void printTriangle(int[] x) { //base condition if (x.length == 1) { return; } /*temprory Array of input array in print(int[] arr) function for example arr = {1,2,3,4,5} then temp[] = {3,5,7,9} of size(arr.length-1)=4*/ int[] temp = new int[x.length - 1]; //Recursive function to fill elements in temp Array according to Que. helper(temp, x, 0); //Recursive call for print(int[] arr) function printTriangle(temp); //prints String format of temp Array// System.out.println(Arrays.toString(temp)); } //Recursive function to fill elements in temp Array// static int[] helper(int[] temp, int[] x, int index) { //base condition// if (index == x.length - 1) { return temp; } temp[index] = x[index] + x[index + 1]; //Recursive Call for helper() function// return helper(temp, x, index + 1); } } //This Code is Contributed by Pradeep_6036 from YMCA//
Producción
[48] [20, 28] [8, 12, 16] [3, 5, 7, 9] [1, 2, 3, 4, 5]
Publicación traducida automáticamente
Artículo escrito por Sagar Shukla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA