读书人

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

发布时间: 2012-02-04 15:43:09 作者: rapoo

求高手帮忙看看这个递归函数的问题究竟在哪
有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]方法中返回的值

读书人网 >Iphone

热点推荐