关于递归的问题
#include <stdio.h>void up_and_down(int n);
void up_and_down(int n)
{
printf("%d ", n);
if (n > 0)
{
up_and_down(--n);
}
printf("%d ", n);
}
int main(void)
{
int n;
printf("请输入一个整数:");
scanf("%d", &n);
up_and_down(n);
putchar('\n');
return 0;
}
为什么最后会输出5 4 3 2 1 0 0 0 1 2 3 4;
不应该是输出5 4 3 2 1 0就结束了吗 递归递归,有去有回,每次递归的时候后面的代码都是挂起的,后面的输出来自函数中最后那个printf 这是因为你的递归函数中输出了两次。
把第12行去掉就可以了。
#include <stdio.h>
void up_and_down(int n);
void up_and_down(int n)
{
printf("%d ", n);
if (n > 0)
{
up_and_down(--n);
}
}
int main(void)
{
int n;
printf("请输入一个整数:");
scanf("%d", &n);
up_and_down(n);
putchar('\n');
return 0;
}
页:
[1]