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

    Joined:
    Aug 30, 2006
    Messages:
    11
    Likes Received:
    0
    Trophy Points:
    0
    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

    Joined:
    Jul 12, 2004
    Messages:
    15,276
    Likes Received:
    364
    Trophy Points:
    83
    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

    Joined:
    Aug 30, 2006
    Messages:
    11
    Likes Received:
    0
    Trophy Points:
    0
    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

    Joined:
    Jul 12, 2004
    Messages:
    15,276
    Likes Received:
    364
    Trophy Points:
    83
    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

    Joined:
    Aug 30, 2006
    Messages:
    11
    Likes Received:
    0
    Trophy Points:
    0
    k thanx
     
  6. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,276
    Likes Received:
    364
    Trophy Points:
    83
    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