如何使用递归缩进行
How to indent lines using recursion?
尝试使用递归实现类似的功能:
if (m > n) return;
Foo 1 // no tabs
Foo 2 // t
Foo 3 // tt
Foo 2 // t
Foo 1 // no tabs
我有一个函数,它有两个参数:void indent(int m, int n);
(m到n的主叫号码)。
到目前为止,我明白了这些:
- 只要m <= n,就一直调用函数。(基准)
- 打印不带制表符的第一行setw(0)
- 以m+1增量递归调用函数。环境运输及工务局局长(4 *米)
- 打印不带制表符的第一行(再次)。环境运输及工务局局长(0)
我讲对了吗?我的伪代码至少是正确的吗?
还有,有没有办法用数字表示制表符?我想不出用递归或迭代来使用tab t的任何方法。
: 我想通了:)。cout << setw(4*m);
在cout << "Foo";
之前。第一次调用m=0时,调用setw(0),第二次调用setw(4),然后调用setw(8),以此类推。现在我只需要将文本向后打印到0个制表符
看来你是在正确的道路上。如果只希望递归方法检查m == n,则只打印一行,而不是两次,然后展开。
这会很好地工作。
void indent( int m, int n )
{
PrintTabs( m ); // Forward Printing
if ( m < n )
{
indent( m + 1, n );
PrintTabs( m ); // Backward Printing
}
}
int main()
{
indent( 0, MAX );
return 0;
}
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- clang格式:宏的缩进
- C++setiosflags函数操纵器-未确定的缩进
- 如何在Elixir中调用递归函数并行
- 十进制到八进制递归C++.以标准::字符串格式输出
- 使用递归的十六进制算术
- YACC递归中的con缩值
- 知道如何将八进制数转换为带有递归的小数
- 我需要写一个函数,将十六进制转换为十进制,并使用递归,我不断得到运行时错误
- 如何使用递归缩进行
- 使用递归(C++)的十进制到十六进制转换器