1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Recursion help

Discussion in 'C++' started by kingo, Sep 26, 2006.

  1. kingo

    kingo New 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
     
  2. shabbir

    shabbir Administrator Staff Member

    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;
    }
     
  3. kingo

    kingo New Member

    I mean tht one line code should be of returning type.................I am not able to figure it out
     
  4. shabbir

    shabbir Administrator Staff Member

    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;
     
  5. kingo

    kingo New Member

    k thanx
     
  6. shabbir

    shabbir Administrator Staff Member

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

Share This Page