带递归的节号

时间:2017-11-05 00:54:43

标签: c++ recursion

我在完成作业时遇到了麻烦,可能是一个非常熟悉的作业(link)。这是题为“部分编号”的问题2。

基本上,这是一个递归问题,它打印出一个字符串以及由级别定义的节号。如果有一个级别,则打印string1。到string9。 如果有两个,string1.1。 to string9.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);
        }
     }
}

我知道前缀是通过递归覆盖的,所以不是打印原始字符串而是字符串1.1。我不知道的是如何保持原件完好无损,以便最后可以打印。 (我知道这里已经发布了一个完全相同的问题,但我已经尝试了两种解决方案,而且我无法到达任何地方。)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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

如果您一直坚持使用递归,请尝试使用递归来计算阶乘(经典示例)。大多数用途都是从这里消失的。

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