ios - 递归方法 Objective-C

标签 ios objective-c recursion

我正在检查字符串的第一个字母是否为 0,如果它被删除并再次调用方法来检查是否仍然有 0。我已经对此进行了调试,似乎当它完成没有 0 的数字时,它会继续向后。代码:

-(NSString *)deleteZerosOnFirst:(NSString *)card
{
    NSString *firstLetter = [card substringToIndex:1];
    if ([firstLetter isEqualToString:@"0"]) {
        card = [card substringFromIndex:1];
        [self deleteZerosOnFirst:card];
        NSLog(@"CARD: %@", card);
        return card;
    }
    else {
         NSLog(@"CARD: %@", card);
        return card;
    }

}

最佳答案

主要问题是您没有使用递归的结果。你自称的代码行应该这样说:

card = [self deleteZerosOnFirst:card];

此外,您在执行 NSLog 之前调用 deleteZerosOnFirst。颠倒这两行的顺序。这至少会以正确的顺序为您提供调试输出。

关于ios - 递归方法 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043492/

相关文章:

objective-c - 从 iOS 上的元数据获取位置

ios - SKScene.anchorPoint 如何影响 physicsBody?

ios - 通知 TableView 重新加载数据

iphone - 我可以从 NSHTTPURLResponse 获取状态文本吗?

function - F#:递归函数:连接两个列表之间的公共(public)值

javascript - 堆的算法置换 JavaScript 和递归的堆栈?

c - 如何使用递归函数只打印树的 5 个节点

ios - 如何使用 Facebook Pop 放慢动画速度?

ios - 动态隐藏状态栏时如何保留状态栏占用的空间?

ios - 如何在运行时正确压缩 UIImages