[英]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.