c++ - 如何使用递归缩进行?

标签 c++ recursion indentation

尝试使用递归实现这样的事情:

if (m > n) return;
Foo 1          // no tabs
   Foo 2       // \t
      Foo 3    // \t\t
   Foo 2       // \t
Foo 1          // no tabs

我有一个带有两个参数的函数:void indent(int m, int n); (调用号码从 m 到 n)。

到目前为止我想出了这么多:

  • 只要m <= n,就一直调用函数。 (基本案例)
  • 打印第一行,不带制表符setw(0)
  • 以 m+1 增量递归调用函数。 setw(4*m)
  • (再次)打印没有任何制表符的第一行。 setw(0)

我走在正确的轨道上吗?我的伪代码至少是正确的吗?

还有,有没有办法用数字表示制表符?我想不出任何使用递归或迭代来使用 tab\t 的方法。

更新:我想通了:)。 cout << setw(4*m);就在cout << "Foo";之前做的伎俩。第一次调用 m=0 所以 setw(0),第二次调用 setw(4),然后是 setw(8) 等等。现在我只需将文本向后打印到 0 个标签。

最佳答案

看起来你走的路是对的。您只希望递归方法在 m == n 时检查,您只需打印该行一次而不是两次,然后展开。

关于c++ - 如何使用递归缩进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631347/

相关文章:

python - 在Python中使用计数器来计算斐波那契数

c++ - 生成超立方体链接数据

c# - 使用 c# lambdas 进行递归非二进制、非排序树搜索

c++ - Builder 模式实现中的 Incomplete Type 错误

ruby - 这个方法在ruby中如何使用自己的方法呢?

c++ - 为什么在 c/c++ 中首选某些括号样式/格式?

android-studio - 安卓工作室 "This file is indented with tabs instead of 4 spaces"

Python 告诉我应该在我放的地方缩进

c++ - Dev C++ 和 Visual C++ 的区别

c++ - 使用 DLL 函数是否有任何性能命中?