gpt4 book ai didi

c++ - 为什么在似乎满足基本情况后继续调用此递归函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:04 25 4
gpt4 key购买 nike

#include <iostream>                 

void myFunction(int counter);

int main(){
myFunction(4);
}

void myFunction( int counter)
{
if(counter == 0)
return;
else
{
std::cout << "hello" << counter << std::endl;
myFunction(--counter); //function call
std::cout << counter<< "X" << std::endl;
return;
}
}

输出结果如下:

hello4
hello3
hello2
hello1
0x
1x
2x
3x

在我看来,在打印“hello1”之后,计数器应该降为 0,因此应该满足 if(counter == 0) 语句并且函数应该结束。为什么不呢?

最佳答案

尝试使用缩进来跟踪调用。

  • 调用我的函数(4)
    • 打印“hello4”
    • 调用我的函数(3)
      • 打印“hello3”
      • 调用我的函数(2)
        • 打印“hello2”
        • 调用我的函数(1)
          • 打印“hello1”
          • 调用我的函数(0)
            • 返回
          • 打印0x
          • 返回
        • 打印 1x
        • 返回
      • 打印 2x
      • 返回
    • 打印 3x
    • 返回

关于c++ - 为什么在似乎满足基本情况后继续调用此递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com