这是我在C
中的程序。
f(int n){
if(!n){
return 0;
}
printf("%d", f(--n));
printf("*");
return (n+1);
}
int main()
{
f(3);
return 0;
}
并打印:
0 * 1 * 2 *
现在我看不到为什么它先进入printf
并掉入(--n)
但直到达到0才打印任何内容
答案 0 :(得分:8)
答案 1 :(得分:1)
直到它达到0为止,它不会打印任何内容,因为在printf
中首先执行f(--n)
以计算结果。这将导致该函数递归地执行直到达到0。然后返回上一级的值并开始打印结果0*1*2
。
答案 2 :(得分:1)
使用此程序,您将具有以下流程:
f(3) -> call f(2)
f(2) -> call f(1)
f(1) -> call f(0)
f(0) -> return 0
f(1) -> print(0) print(*) and return 0+1
f(2) -> print(1) print(*) and return 1+1
f(3) -> print(2) print(*) and return 2+1
main
哪个将打印0 * 1 * 2 *