我有这段代码
#include <stdio.h>
void Funz(char *S);
int main()
{
char S[100] = "abcdefghilmnopq";
Funz(S);
return 0;
}
void Funz(char *S)
{
if ('\0' != S[0])
{
Funz(S+1);
printf("%c", *S);
}
}
我不知道为什么打印值的顺序是相反的,而不仅仅是“q”。
最佳答案
Funz(S+1);
printf("%c", *S);
这里是递归调用,然后执行
printf
。为了打印,必须完成每个子调用,然后执行printf
。这就是为什么它是反向打印的。相反,如果使用loop和iterate,则只能得到
'q'
。例如,让我们用一个短字符串表示
"abc"
- Funz(s[0]) (0
/ \
Funz(s[1])(1 'a' (6
/ \
Funz(s[2])(2 'b'(5
/ \
condition 'c'(4
false (3
执行顺序-
0 1 2 3 4 5 6
关于c - 了解C中的打印值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44748836/