Open In App

Function to copy string (Iterative and Recursive)

Improve
Improve
Like Article
Like
Save
Share
Report

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:

C++




// 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;
}


Java




// 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


Python3




## 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)'''


C#




// 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


Javascript




<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>


Output

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:

C++




// 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




// 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


Python3




# 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#




// 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


Javascript




<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>


Output: 

GEEKSFORGEEKS

 

Time Complexity: O(m), Here m is the length of string s1.
Auxiliary Space: O(m), due to recursive call stack



Last Updated : 07 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads