Given two strings, copy one string to another using recursion. We basically need to write our own recursive version of strcpy in C/C++
Examples:
Input : s1 = "hello" s2 = "geeksforgeeks" Output : s2 = "hello" Input : s1 = "geeksforgeeks" s2 = "" Output : s2 = "geeksforgeeks"
Iterative: Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn’t reach to end;
Implementation:
// Iterative CPP Program to copy one String // to another. #include <bits/stdc++.h> using namespace std;
// Function to copy one string to other // assuming that other string has enough // space. void myCopy( char s1[], char s2[])
{ int i = 0;
for (i=0; s1[i] != '\0' ; i++)
s2[i] = s1[i];
s2[i] = '\0' ;
} // Driver function int main()
{ char s1[100] = "GEEKSFORGEEKS" ;
char s2[100] = "" ;
myCopy(s1, s2);
cout << s2;
return 0;
} |
// Iterative Java Program to copy one String // to another. class GFG
{ // Function to copy one string to other // assuming that other string has enough // space. static void myCopy( char s1[], char s2[])
{ int i = 0 ;
for (i = 0 ; i < s1.length; i++)
s2[i] = s1[i];
} // Driver code public static void main(String[] args)
{ char s1[] = "GEEKSFORGEEKS" .toCharArray();
char s2[] = new char [s1.length];
myCopy(s1, s2);
System.out.println(String.valueOf(s2));
} } // This code contributed by Rajput-Ji |
## Iterative Python Program to copy one String # to another. # Function to copy one string to other def myCopy(s1,s2):
# traversing the string s1 from start to end
for i in range ( len (s1)):
# copying value one by one
s2[i] = s1[i]
return "".join(s2)
#Driver code s1 = list ( "GEEKSFORGEEKS" )
s2 = [""] * len (s1)
print (myCopy(s1,s2))
'''Code is contributed by RAJAT KUMAR (rajatkumargla19)''' |
// Iterative C# Program to copy one String // to another. using System;
class GFG
{ // Function to copy one string to other // assuming that other string has enough // space. static void myCopy( char []s1, char []s2)
{ int i = 0;
for (i = 0; i < s1.Length; i++)
s2[i] = s1[i];
} // Driver code public static void Main(String[] args)
{ char []s1 = "GEEKSFORGEEKS" .ToCharArray();
char []s2 = new char [s1.Length];
myCopy(s1, s2);
Console.WriteLine(String.Join( "" , s2));
} } // This code is contributed by 29AjayKumar |
<script> // Iterative Javascript Program to copy one String // to another. // Function to copy one string to other // assuming that other string has enough // space. function myCopy(s1, s2)
{ let i = 0;
for (i = 0; i < s1.length; i++)
s2[i] = s1[i];
} // Driver code // Driver Code
let s1 = "GEEKSFORGEEKS" ;
let s2 = []; let index = 0; myCopy(s1, s2, index); document.write(s2.join( "" ));
// This code contributed by shivanisinghss2110 </script> |
GEEKSFORGEEKS
Time Complexity: O(m), Here m is the length of string s1.
Auxiliary Space: O(1), As constant extra space is used.
Recursive: Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn’t reach to end;
Implementation:
// CPP Program to copy one String to // another using Recursion #include <bits/stdc++.h> using namespace std;
// Function to copy one string in to other // using recursion void myCopy( char s1[], char s2[], int index = 0)
{ // copying each character from s1 to s2
s2[index] = s1[index];
// if string reach to end then stop
if (s1[index] == '\0' )
return ;
// increase character index by one
myCopy(s1, s2, index + 1);
} // Driver function int main()
{ char s1[100] = "GEEKSFORGEEKS" ;
char s2[100] = "" ;
myCopy(s1, s2);
cout << s2;
return 0;
} |
// Java Program to copy one String to // another using Recursion class GFG
{ // Function to copy one string in to other
// using recursion
static void myCopy( char s1[],
char s2[], int index)
{
// copying each character from s1 to s2
s2[index] = s1[index];
// if string reach to end then stop
if (index == s1.length - 1 )
{
return ;
}
// increase character index by one
myCopy(s1, s2, index + 1 );
}
// Driver Code
public static void main(String[] args)
{
char s1[] = "GEEKSFORGEEKS" .toCharArray();
char s2[] = new char [s1.length];
int index = 0 ;
myCopy(s1, s2, index);
System.out.println(String.valueOf(s2));
}
} // This code is contributed by PrinciRaj1992 |
# recursive Python Program to copy one String # to another. # Function to copy one string to other def copy_str(x, y):
if len (y) = = 0 :
return x
else :
c = copy_str(x, (y)[ 1 : - 1 ])
return c
x = input ( "hello" )
y = input ( "no" )
print (copy_str(x, y))
# This code contributed by deeksha20049@iiid.ac.in |
// C# Program to copy one String to // another using Recursion using System;
class GFG
{ // Function to copy one string in to other
// using recursion
static void myCopy( char []s1,
char []s2, int index)
{
// copying each character from s1 to s2
s2[index] = s1[index];
// if string reach to end then stop
if (index == s1.Length - 1)
{
return ;
}
// increase character index by one
myCopy(s1, s2, index + 1);
}
// Driver Code
public static void Main(String[] args)
{
char []s1 = "GEEKSFORGEEKS" .ToCharArray();
char []s2 = new char [s1.Length];
int index = 0;
myCopy(s1, s2, index);
Console.WriteLine(String.Join( "" , s2));
}
} // This code is contributed by Princi Singh |
<script> // Javascript program to copy one String to // another using Recursion // Function to copy one string in to other // using recursion function myCopy(s1, s2, index)
{ // Copying each character from s1 to s2
s2[index] = s1[index];
// If string reach to end then stop
if (index == s1.length - 1)
{
return ;
}
// Increase character index by one
myCopy(s1, s2, index + 1);
} // Driver Code var s1 = "GEEKSFORGEEKS" ;
var s2 = [];
var index = 0;
myCopy(s1, s2, index); document.write(s2.join( "" ));
// This code is contributed by gauravrajput1 </script> |
GEEKSFORGEEKS
Time Complexity: O(m), Here m is the length of string s1.
Auxiliary Space: O(m), due to recursive call stack