三个空瓶换一瓶

来源:互联网 发布:ipp软件下载 编辑:程序博客网 时间:2024/04/25 09:20

问题:商店促销饮料,三个空瓶可以换取一瓶,现在有n个人,一共需要购买多少瓶?

思想:一共n个人,就先买n瓶,买n瓶可以获得最后能喝多少(result)瓶;如果result>n,则继续计算买n-1瓶最后能喝多少瓶,…一直计算到result < n,这时候假如是购买a瓶的时候,则购买a+1瓶才够n个人喝;

分两步实现:

第一步:递归出买b瓶最后能喝多少瓶(result);
第二步:判断第一步计算的result与总人数(n)的关系

@property(assign, nonatomic) NSInteger result;#pragma 一共N个人,返回需要购买的瓶数-(NSInteger)personCount:(NSInteger)personCount{    //一共N个人,返回需要购买的瓶数    for (NSInteger i = personCount; i > 0; i --) {        self.result = i;        [self buyCount:self.result];        if (self.result < personCount) {            self.result = i + 1;            [self buyCount:self.result];            personCount = i + 1;            return i + 1;        }    }    return personCount;}#pragma 购买n瓶,返回最后能喝多少瓶-(NSInteger)buyCount:(NSInteger)buyCount{    //购买n瓶,返回最后能喝多少瓶    NSInteger b = buyCount / self.result;    NSInteger c = buyCount % result;    if (b > result) {        self.result += b;        [self buyCount:b + c];    }    self.result += b;    return self.result;}
0 0
原创粉丝点击