理解c++中递归打印123456789987654321的代码

understanding code to print 123456789987654321 by recursion in c++

本文关键字:123456789987654321 代码 打印 递归 c++ 理解      更新时间:2023-10-16

好了,我正在读《跳到c++》这本书,我已经成功地读到了第16章,那是关于递归的。我读了这一章,看了一些youtube视频,所以我想我知道它们是如何工作的。但是当我试图理解书中给出的代码时,我失败了。根据我的理解,这段代码应该打印1234567899。我注释了我看不懂的行/部分。当我解释的时候,请非常详细,因为我想彻底消除我的疑虑。

#include <iostream>
using namespace std;
void printNum (int num)
{
    cout << num ;
    if ( num < 9 )
    {
        printNum( num + 1 ); //if statement should continue untill 123456789 prints on screen
    }
    cout << num; // this should print only 9 and after that program should exit.
}
int main ()
{
    printNum( 1 );
}

printNum(9)打印什么?希望你能看到它输出99,因为if是假的。

那么printNum(8)打印什么?在这种情况下,printNum做了三件事。首先,它输出8,这是cout << num ;部分。然后它输出99(因为如果num为8,printNum(num + 1)就会这样做,参见第一段)。然后它输出8,因为这是下一行代码。因此printNum(8)将输出8998

那么printNum(7)打印什么呢?首先是7,然后调用printNum(8),输出8998(见第二段)。然后输出7。因此,printNum(7)将输出789987

每次调用printNum时,打印最后一个cout << numprintNum被递归调用9次。这就是为什么你的第二个评论this should print only 9...不完全准确。它将为printNum(9)打印9,是的,但它也将随后为printNum(8)打印8,等等…

printNum结束后,程序控制返回到先前对printNum调用。因此,例如,在printNum(9)结束后,它返回到printNum(8)以打印最后的第二个8

相关文章:
  • 没有找到相关文章