我现在正在学习递归.这是三个代码.第一个和第三个是给我预期的输出,但第二个不是?有人能告诉我他们的区别是什么.
代码1:
void tail(int i){
if (i>0) {
printf("%d\n",i);
tail(i-1);
}
}
int main()
{
tail(5);
}
Run Code Online (Sandbox Code Playgroud)
代码2:
void tail(int i){
if (i>0) {
printf("%d\n",i);
tail(i--);
}
}
int main()
{
tail(5);
}
Run Code Online (Sandbox Code Playgroud)
代码3:
void tail(int i){
if (i>0) {
printf("%d\n",i);
tail(--i);
}
}
int main()
{
tail(5);
}
Run Code Online (Sandbox Code Playgroud)
代码1的输出:
5 4 3 2 1
代码2的输出:
5 5 5...无穷
代码3的输出:
5 4 3 2 1
请帮帮我.我很迷惑!