Escribe una función recursiva para imprimir el reverso de una string dada.
Código:
C++
// C++ program to reverse a string using recursion #include <bits/stdc++.h> using namespace std; /* Function to print reverse of the passed string */ void reverse(string str) { if(str.size() == 0) { return; } reverse(str.substr(1)); cout << str[0]; } /* Driver program to test above function */ int main() { string a = "Geeks for Geeks"; reverse(a); return 0; } // This is code is contributed by rathbhupendra
C
// C program to reverse a string using recursion # include <stdio.h> /* Function to print reverse of the passed string */ void reverse(char *str) { if (*str) { reverse(str+1); printf("%c", *str); } } /* Driver program to test above function */ int main() { char a[] = "Geeks for Geeks"; reverse(a); return 0; }
Java
// Java program to reverse a string using recursion class StringReverse { /* Function to print reverse of the passed string */ void reverse(String str) { if ((str==null)||(str.length() <= 1)) System.out.println(str); else { System.out.print(str.charAt(str.length()-1)); reverse(str.substring(0,str.length()-1)); } } /* Driver program to test above function */ public static void main(String[] args) { String str = "Geeks for Geeks"; StringReverse obj = new StringReverse(); obj.reverse(str); } }
Python
# Python program to reverse a string using recursion # Function to print reverse of the passed string def reverse(string): if len(string) == 0: return temp = string[0] reverse(string[1:]) print(temp, end='') # Driver program to test above function string = "Geeks for Geeks" reverse(string) # A single line statement to reverse string in python # string[::-1] # This code is contributed by Bhavya Jain
C#
// C# program to reverse // a string using recursion using System; class GFG { // Function to print reverse // of the passed string static void reverse(String str) { if ((str == null) || (str.Length <= 1)) Console.Write(str); else { Console.Write(str[str.Length-1]); reverse(str.Substring(0,(str.Length-1))); } } // Driver Code public static void Main() { String str = "Geeks for Geeks"; reverse(str); } } // This code is contributed by Sam007
PHP
<?php // PHP program to reverse // a string using recursion // Function to print reverse // of the passed string function reverse($str) { if (($str == null) || (strlen($str) <= 1)) echo ($str); else { echo ($str[strlen($str) - 1]); reverse(substr($str, 0, (strlen($str) - 1))); } } // Driver Code $str = "Geeks for Geeks"; reverse($str); // This code is contributed by // Manish Shaw(manishshaw1) ?>
Javascript
<script> // JavaScript Program for the above approach /* Function to print reverse of the passed string */ function reverse(str, len) { if (len == str.length) { return; } reverse(str, len + 1); document.write(str[len]); } /* Driver program to test above function */ let a = "Geeks for Geeks"; reverse(a, 0); // This code is contributed by Potta Lokesh </script>
Producción:
skeeG rof skeeG
Explicación: la función recursiva (inversa) toma el puntero de string (str) como entrada y se llama a sí mismo con la siguiente ubicación al puntero pasado (str+1). La recursividad continúa de esta manera cuando el puntero llega a ‘\0’, todas las funciones acumuladas en la pila imprimen el carácter en la ubicación pasada (str) y regresan una por una.
Complejidad de tiempo: O(n^2) como método substr() tiene una complejidad de tiempo de O(k) donde k es el tamaño de la string devuelta. Entonces, para cada llamada recursiva, estamos reduciendo el tamaño de la string en uno, lo que conduce a una serie como (k-1)+(k-2)+…+1 = k*(k-1)/2 = O (k ^ 2) = O (n ^ 2)
Consulte Invertir una string para conocer otros métodos para invertir la string.
Espacio Auxiliar: O(n)
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Sugiera si alguien tiene una mejor solución que sea más eficiente en términos de espacio y tiempo.
Este artículo es una contribución de Aarti_Rathi. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA