使用 main 函数递归
Recursion using the main function
我需要找到这段代码的输出。我知道这是递归,但我不完全知道这段代码实际上是如何工作的。我认为这将是一个无限代码,但事实并非如此。有人可以解释一下吗?
#include <stdio.h>
char *str = "kre";
void main(void) {
int i;
static int j = 3;
for (i = 0; i < j; i++) {
printf("%d ", j--);
main();
}
printf("%sn%c ", str, 'i');
}
I thought that this would be an infinite code but it is not
这不是无限代码,因为您为 j
声明了 static
(参见 What does “static” mean in C?):
static int j = 3;
j
的值将在您调用 main
函数时更新。您可以看到程序的输出:
3 2 1 kreni kreni kreni kreni
j
的值从3
递减到1
,然后当j = 0
时,你不能访问for
循环,因为条件i < j
不被接受,所以 main()
不再被调用。
如果你想要一个无限的代码,你从 j
的声明中删除 static
,你的程序将永远不会停止。
我需要找到这段代码的输出。我知道这是递归,但我不完全知道这段代码实际上是如何工作的。我认为这将是一个无限代码,但事实并非如此。有人可以解释一下吗?
#include <stdio.h>
char *str = "kre";
void main(void) {
int i;
static int j = 3;
for (i = 0; i < j; i++) {
printf("%d ", j--);
main();
}
printf("%sn%c ", str, 'i');
}
I thought that this would be an infinite code but it is not
这不是无限代码,因为您为 j
声明了 static
(参见 What does “static” mean in C?):
static int j = 3;
j
的值将在您调用 main
函数时更新。您可以看到程序的输出:
3 2 1 kreni kreni kreni kreni
j
的值从3
递减到1
,然后当j = 0
时,你不能访问for
循环,因为条件i < j
不被接受,所以 main()
不再被调用。
如果你想要一个无限的代码,你从 j
的声明中删除 static
,你的程序将永远不会停止。