自然数的集合论定义(递归)

时间:2015-05-03 18:50:50

标签: c++ recursion numbers set

我参加离散数学课程,我需要开发一个c ++程序,它接收一个字符串作为输入并返回它代表的自然数(如果有的话)。自然数定义如下: 0 = {},1 = {{}},2 = {{} {{}}},3 = {{} {{}} {{} {{}}}}等等。我认为这可以递归地完成,基本情况是" {}"但是我不确定如何考虑解决方案。我的一个朋友告诉我,他已经注意到开口牙箍的数量总是2 ^ n,但我觉得这并不是那么简单,因为这有一些问题,我想。 谢谢!

1 个答案:

答案 0 :(得分:1)

只计算开放式括号,不会将格式良好的输入与畸形输入区分开来。

首先编写一个程序,该程序可以在给定输入值的情况下构造并输出一个括号字符串形式编号。

这将为您澄清问题。那么你可以将一个支撑弦输入与你构造的一个支撑弦相匹配吗?你能从那里走到完整的解决方案吗?

编辑:上述解决问题的方法是首先解决一个更简单的子问题或相关问题。另一种技术是寻找多种方法,然后选择一种方法(如果结果很难,则准备切换)。

解决此问题的另一种方法是将输入读入STL集合集。类似的东西:

class Set {
  std::set<Set> elements;
 public:
  void read(std::istream in) {...}  // recursively reads & adds Sets
  int size() {...}
}