This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

can not perform recursion function correctly

hi: I want to use recursion function to transform a integer from binary form to ascii form. But the result is wrong.I don't why ,please help to analyse.

soure code:

void
binary_to_ascii(unsigned int value)
{

   unsigned int quotient;
   quotient = value/10;
   if(quotient !=0 )
       binary_to_ascii(quotient);
   putchar(value%10+'0');

}


int
main()
{
 while(1){
    binary_to_ascii(4267);
  }
}


I want to produce characters '4','2','6','7' in sequence. but the result is '4','4','4'. I don't know what is wrong with my code.

Parents
  • I agree with the sage advice of the replys to this post but having said that, I must insist that recursion for the Keil C51 toolset does work well when you stay within it's limitations.
    You can set the max depth of recursion. And you limit the registers used by passing a minimum set of parameters.
    As posted, only registers R7 and R6 will be used to pass parameters. The pseudo stack is built "top down" in the Idata area. It's not difficult to see how much Idata area is used by the pseudo stack.
    Bradford

Reply
  • I agree with the sage advice of the replys to this post but having said that, I must insist that recursion for the Keil C51 toolset does work well when you stay within it's limitations.
    You can set the max depth of recursion. And you limit the registers used by passing a minimum set of parameters.
    As posted, only registers R7 and R6 will be used to pass parameters. The pseudo stack is built "top down" in the Idata area. It's not difficult to see how much Idata area is used by the pseudo stack.
    Bradford

Children