c++递归函数

C++ Recursive functions

本文关键字:递归函数 c++      更新时间:2023-10-16

我正在学习c++,当函数被自己调用时,我有递归工作的麻烦。

#include <iostream>
using namespace std;
int countdown(int y) {
    if (y==1) {
        return 1 && cout << y << endl;
    }
    else {
        return countdown(y-1);
    }
}
int main () {
    cout << "Countdown from ten: " << endl;
    cout << countdown(10) << endl;
}

当然,还有其他方法可以实现这一点,但实际上我创建这个例子是为了验证我自己对如何递归调用函数的理解。

在示例中,我添加了&& cout << y以验证y是否作为1传递给函数,无论我将函数称为countdown(10),情况总是如此。

谁能告诉我,如果我错过了一些明显的东西,请?

你的' count <<只有当Y被测试为1时,Y才会执行。

这个版本是我认为你想要的:

#include <iostream>
using namespace std;
int countdown(int y) 
{
    cout << y << endl;
    if (y==1)
    {
        return 1;
    }
    else 
    {
        return countdown(y-1);
    }
}
int main() 
{
    cout << "Countdown from ten: " << endl;
    cout << countdown(10) << endl;
}

您的调用堆栈看起来像这样:

main
  countdown(10)
    countdown(9)
      countdown(8)
        countdown(7)
          countdown(6)
            countdown(5)
              countdown(4)
                countdown(3)
                  countdown(2)
                    countdown(1)
                      std::cout << 1 << std::endl;

如果你想看到整个倒计时,把输出命令移到If条件前面。

而且,您编写输出的风格非常独特。注意,它之所以有效,是因为1 %&& cout可以将cout转换为bool,而bool可以转换为int。请不要写这样的代码