求高手帮忙看看这个递归函数的有关问题究竟在哪

求高手帮忙看看这个递归函数的问题究竟在哪
有2数组 
  neWRadmonArray = [[NSMutableArray alloc] init];

  RadmonArray = [[NSMutableArray alloc] init];
  [RadmonArray addObject:@"A"];
  [RadmonArray addObject:@"B"];
  [RadmonArray addObject:@"C"];
  [RadmonArray addObject:@"D"];
  [RadmonArray addObject:@"E"];


我现在随即从RadmonArray取出一条


-(NSString *) GenerateRandom{

  int randomValue = arc4random()%5;//Generate 0 - 4
  NSString *returnRandom = [RadmonArray objectAtIndex:randomValue];
  int i;
  int total;
  bool existFlag=false;

  if(returnRandom==@"A" && hasGenerateBlue==true){
  [self GenerateRandom];
  }


  for(i=0,total=[neWRadmonArray count];i<total;i++)
  {
  if (returnRandom == [neWRadmonArray objectAtIndex:i]){
  existFlag = true;
  break;
  }
  }
if(existFlag)//check if has generated.
  {
  [self GenerateRandom];
  }
  else
  {
  [neWRadmonArray addObject:returnRandom];//put generated shape into array
  }
  return returnRandom;



但是还是出重复的。。。帮忙看看,,,


------解决方案--------------------
if(existFlag)//check if has generated.
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;感觉就像这里的原因,如果存在了,它会调用自身函数,是不是当执行完[self GenerateRandom];之后它还会继续执行后面,后面的return returnRandom,返回的并不是你调用的[self Gen...dom]中return的东西,而是返回的你在当前这次调用函数最初赋予的,所以应该返回不出你想要的其实是递归调用的[self GeneratRandom]方法中返回的值