簡體   English   中英

C 無限循環 On While 循環

[英]C Infinite Loop On While Loop

 #include <stdio.h>
    
 void add(int num){
     while(num < 6){
         add(num+1);
     }
    printf("\n%d",num);
 }

void main(){
    int a = 1;
    add(a);
}

誰能解釋我為什么它會無限

6 6 6 6....

而且不僅

6

單次。

您不要在循環中更改 num 變量,請嘗試以下操作:

   #include <stdio.h>
        
     void add(int num){
         while(num < 6){
             num++;
             add(num);
         }
        printf("\n%d",num);
     }
    
    void main(){
        int a = 1;
        add(a);
    }

而且不僅

6單次。

好吧,由於遞歸調用,即使使用無限循環,它也永遠不會只有一次。

要只獲得一次,您可以:

 void add(int num){
     while(num < 6){
         num++;
     }
    printf("\n%d",num);
 }

或者

 void add(int num){
     if(num < 6){
        add(num+1);
     }
    if(num == 6)
      printf("\n%d",num);
 }

但不是兩者結合。

在你的循環中:

 while(num < 6){
     add(num+1);
 }

你永遠不會修改num 所以循環永遠不會退出。 您最終通過遞歸調用add(5) 這調用add(6)打印值 6 並返回。 然后由於循環,先前的遞歸調用再次調用add(6) ,依此類推。

鑒於您有一個遞歸 function,您不希望在這里出現循環。 這應該只是一個if語句:

 void add(int num){
     if(num < 6){
         add(num+1);
     }
    printf("\n%d",num);
 }

這將打印從 6 倒計時到(在本例中)1 的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM