【问题标题】:C Function Infinite Loop issueC函数无限循环问题
【发布时间】:2016-02-04 19:43:19
【问题描述】:

我相信有一个简单的解决方案可以解决我的问题,但是我的大脑现在太煎熬了,无法思考。

在我的主函数中,我有一个函数,我们称之为“Function1”。在“Function1”中,我调用另一个函数来验证“Function1”中的数据,我们称之为“Function2”。为了让“Function2”做好它的工作,它需要再次调用“Function1”。这显然是我如何获得“Function1”和“Function2”重复调用对方的无限循环。我需要创建方法来跟踪它,这样我就可以在 Main --> Function1 --> Function2 --> Function1 --> End 的第一遍之后停止循环,但是我的实现一直失败。

非常感谢任何帮助和指导。

【问题讨论】:

  • “一段代码说 1000 多个单词”。愿意分享函数的代码吗?这应该会提高您获得有用答案的几率。

标签: c function infinite-loop


【解决方案1】:

您需要将一个级别计数器传递给 function1。在第一次调用时,级别为0。如果级别为0,则可以调用function2。如果它 > 0 则不要调用 function2。 当 function2 调用 function1 时,它将级别设置为 1(或增加它)。 这就是你进行递归调用的方式。当然,您可以根据需要将结束条件更改为其他值(而不仅仅是 0 和 1)。

【讨论】:

  • 谢谢,我相信我知道这一点,我只是需要说出来。感谢您的帮助
【解决方案2】:

您可以设置一个计数器整数,并且仅在计数器小于 1 时运行 Function2(或者您希望循环在中断之前迭代多少次)。

例如(伪代码):

int count;

  Function1{  
    ...  
    while(count < 1){  
      Function2{  
        ....     //Function2 code
        count++;  
    }  
  }  
  ..   //any code from Function1 that should run after Function2  
}

(请注意,如果您愿意,您也可以使用布尔值来执行此操作 - 我更喜欢整数方法,因为您可以在很容易中断之前更改迭代次数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多