C 在 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);
}
谁能解释一下为什么它会变成 Infinite
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);
}
And not only
6 single time.
事实上,由于递归调用,即使使用无限循环,它也永远不会只有一次。
要只获得一次,您可以这样做:
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 和 returns。然后先前的递归调用由于循环再次调用 add(6)
,依此类推。
假设你有一个递归函数,你不想在这里有一个循环。这应该只是一个 if
语句:
void add(int num){
if(num < 6){
add(num+1);
}
printf("\n%d",num);
}
这将打印从 6 倒数到(在本例中)1 的值。
#include <stdio.h>
void add(int num){
while(num < 6){
add(num+1);
}
printf("\n%d",num);
}
void main(){
int a = 1;
add(a);
}
谁能解释一下为什么它会变成 Infinite
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);
}
And not only
6 single time.
事实上,由于递归调用,即使使用无限循环,它也永远不会只有一次。
要只获得一次,您可以这样做:
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 和 returns。然后先前的递归调用由于循环再次调用 add(6)
,依此类推。
假设你有一个递归函数,你不想在这里有一个循环。这应该只是一个 if
语句:
void add(int num){
if(num < 6){
add(num+1);
}
printf("\n%d",num);
}
这将打印从 6 倒数到(在本例中)1 的值。