带递归的节号

Section Numbers with Recursion

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

我在作业上遇到了麻烦,而且可能非常熟悉(链接)。这是标题为"节号"的问题 2。

基本上,这是一个递归问题,它打印出一个字符串以及由级别定义的节号。如果有一个级别,它将打印 string1。到字符串9。如果有两个,则字符串 1.1。到字符串9.9.等。我遇到的问题是最后一个细节,程序会自行打印出原始字符串。

我的代码:

#include <iostream>  // Provides cin, cout
#include <cstdlib>   // Provides EXIT_SUCCESS
#include <sstream>
#include <string>
using namespace std;
void numbers(ostream& outs, const string& prefix, unsigned int levels);
int main()
{
    numbers(cout, "THERBLIG", 2);
}
void numbers(ostream& outs, const string& prefix, unsigned int levels)
{
     if(levels == 0)
    {
         cout << prefix << endl;
    }
     else
    {
         for(int i = 1; i <= 9; i++)
        {
             string s = (prefix + char('0' + i));
             s += '.';
             numbers(outs, s, levels - 1);
        }
     }
}

我知道前缀通过递归被覆盖,所以不是打印原始字符串,而是 string1.1。我不知道的是,如何保持原件完好无损,以便最后可以打印出来。(我知道这里已经有一篇帖子提出了完全相同的问题,但我已经尝试了这两种解决方案,但我无法获得任何地方。

任何帮助都非常感谢!

提示:使用静态局部变量,或使用递归追加。

如果您曾经坚持递归,请尝试使用递归来计算阶乘(经典示例)。大多数用途都源于此。

另外,请不要在这里发布您的作业。