Given two strings, copy one string to other 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;
C++
#include <bits/stdc++.h>
using namespace std;
void myCopy(char s1[], char s2[])
{
int i = 0;
for (i=0; s1[i] != '\0'; i++)
s2[i] = s1[i];
s2[i] = '\0';
}
int main()
{
char s1[100] = "GEEKSFORGEEKS";
char s2[100] = "";
myCopy(s1, s2);
cout << s2;
return 0;
}
|
Java
class GFG
{
static void myCopy(char s1[], char s2[])
{
int i = 0;
for (i = 0; i < s1.length; i++)
s2[i] = s1[i];
}
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));
}
}
|
Python3
def copy_str(x,y):
if len(y)==0:
return x
else:
c = copy_str(x,(y)[1:-1])
return c
x = input()
y = input()
print(copy_str(x,y))
|
C#
using System;
class GFG
{
static void myCopy(char []s1, char []s2)
{
int i = 0;
for (i = 0; i < s1.Length; i++)
s2[i] = s1[i];
}
public static void Main(String[] args)
{
char []s1 = "GEEKSFORGEEKS".ToCharArray();
char []s2 = new char[s1.Length];
myCopy(s1, s2);
Console.WriteLine(String.Join("", s2));
}
}
|
Javascript
<script>
function myCopy(s1, s2)
{
let i = 0;
for (i = 0; i < s1.length; i++)
s2[i] = s1[i];
}
let s1 = "GEEKSFORGEEKS";
let s2 = [];
let index = 0;
myCopy(s1, s2, index);
document.write(s2.join(""));
</script>
|
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;
C++
#include <bits/stdc++.h>
using namespace std;
void myCopy(char s1[], char s2[], int index = 0)
{
s2[index] = s1[index];
if (s1[index] == '\0')
return;
myCopy(s1, s2, index + 1);
}
int main()
{
char s1[100] = "GEEKSFORGEEKS";
char s2[100] = "";
myCopy(s1, s2);
cout << s2;
return 0;
}
|
Java
class GFG
{
static void myCopy(char s1[],
char s2[], int index)
{
s2[index] = s1[index];
if (index == s1.length - 1)
{
return;
}
myCopy(s1, s2, index + 1);
}
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));
}
}
|
Python3
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))
|
C#
using System;
class GFG
{
static void myCopy(char []s1,
char []s2, int index)
{
s2[index] = s1[index];
if (index == s1.Length - 1)
{
return;
}
myCopy(s1, s2, index + 1);
}
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));
}
}
|
Javascript
<script>
function myCopy(s1, s2, index)
{
s2[index] = s1[index];
if (index == s1.length - 1)
{
return;
}
myCopy(s1, s2, index + 1);
}
var s1 = "GEEKSFORGEEKS";
var s2 = [];
var index = 0;
myCopy(s1, s2, index);
document.write(s2.join(""));
</script>
|
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.