-2

我尝试使用 Xcode 在 C 中进行递归循环。该代码适用于 7boom 游戏,我应该将其作为我的作业尝试。我尝试使用递归,但我的 Xcode 是堆栈并显示错误。

这是我的代码:

#import <Foundation/Foundation.h>
    int main(int argc, const char * argv[])
     {
       BOOL reverse( int num);
       @autoreleasepool {
            int i;
            int num1;
            int num2;
            NSLog(@"Hello, World!");
           for ( i = 1; i<=20; i++){
               num1 = i / 10;
               num2 = i;
               if(i == 7){
                  NSLog(@"boom, i=%d", i);
                 i++;
              }
             if(i % 7 ==0){
                 NSLog(@"boom i=%d", i);
                 i++;
             }
            if(!reverse(i)){
               NSLog(@"boom reverse");
               i++;
             }
        NSLog(@"%d", i);
      }  
    }
   return 0;
  }
BOOL reverse (int num)
{
   if(num == 7)
       return (true);
   else
       reverse(num % 10); 
    return (false);
}

我做错了什么?

4

2 回答 2

4

对于像 6 (或大多数数字)这样的数字,这将永远不会返回

BOOL reverse (int num)
{
    if(num == 7)
        return (true);
    else
        reverse(num % 10); 
    return (false);
}

6 不等于 7,6 mod 10 = 6 重复直到堆栈溢出。

您的其余代码似乎也有点可疑,您应该始终避免在循环内操作 for 循环的控制变量。

于 2012-06-22T17:40:17.470 回答
0

这是家庭作业,所以只是提示......

您似乎了解 an 的if作用和else.

要执行的功能算法reverse什么?

true当且仅当整数的最高有效(最左边)数字是 a 时才返回7

所以你有两种情况:小于 10 的数字,以及不小于 10 的数字。编写一些代码来区分这两种情况。

现在你必须在第一种情况下做什么?将其添加到您的代码中。

在第二种情况下你必须做什么(提示:可能递归?)?将其添加到您的代码中。

完毕。

(除了其他人提出的关于for迭代的担忧之外,它定义了两个变量num1并且num2您不使用和更改控制变量i- 这个循环可能不会像您认为的那样做!)

于 2012-06-22T19:01:23.927 回答