我想了解下面打印的程序的输出.当我看到它时,我看到当使用参数1调用printnum()时,将打印"1",然后从1 <7开始,该函数将调用自身.此过程将继续,直到打印"6",然后调用printnum(7).因此,现在打印"7"并且不满足if条件,因此跳过代码并且我们移动到第二个printf("%d",x)函数,其中再次打印出"7".在第二个printf("%d",x)之后没有任何内容,那么为什么一切都没有结束呢?是什么让程序继续按降序再次打印数字?
#include <stdio.h>
int printnum ( int x )
{
printf("%d", x);
if ( x < 7 )
{
printnum ( x + 1 );
}
printf("%d",x);
}
int main()
{
printnum(1);
}
Run Code Online (Sandbox Code Playgroud)
输出:
12345677654321
printnum(8)永远不会被称为,因为它不是真的7 < 7.
x = 7达到一次降序打印数字的原因是每个递归调用结束,使前一个调用继续.
考虑它的作用x = 1:
x = 2如果我们更多地扩展这一级别:
x = 3还有一个:
x = 4如果继续此扩展,您可以看到在递归调用之前按升序获取数字,在递归调用之后按降序获取数字.
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |