Recursion help

kingo's Avatar
Go4Expert Member
I need to right a recursion program to reverse a string
the condition is
it should be only line
tht line code should be of returning the value
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Really interesting

Code:
#include <iostream.h>
#include <string.h>


void RevStr(char *inArr, char *outArr,int start,int cLen)
{
	((*(outArr+start) = inArr[cLen-1]) && (cLen > 0))?RevStr(inArr, outArr, start+1, cLen-1):0;
}


int main()
{
	char * ptr = "Go4Expert";

	char *outptr = 0;

	outptr = new char[strlen(ptr) + 1];

	RevStr(ptr, outptr, 0, strlen(ptr));
 
	cout<<outptr;

	return 0;
}
0
kingo's Avatar
Go4Expert Member
I mean tht one line code should be of returning type.................I am not able to figure it out
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
This one line is of returning type but as the function does not need to return anything and so it does not have a return statement.

Code:
((*(outArr+start) = inArr[cLen-1]) && (cLen > 0))?RevStr(inArr, outArr, start+1, cLen-1):0;
0
kingo's Avatar
Go4Expert Member
k thanx
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Quote:
Originally Posted by kingo
k thanx
My pleasure.

Also with the return statement heres the code.
Code:
#include <iostream.h>
#include <string.h>


int RevStr(char *inArr, char *outArr,int start,int cLen)
{
	return(((*(outArr+start) = inArr[cLen-1]) && (cLen > 0))?RevStr(inArr, outArr, start+1, cLen-1):0);
}


int main()
{
	char * ptr = "Go4Expert";

	char *outptr = 0;

	outptr = new char[strlen(ptr) + 1];

	RevStr(ptr, outptr, 0, strlen(ptr));
 
	cout<<outptr;

	return 0;
}